Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2023
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
un Triggers dos BBDD

Hola, en este momento estoy trabajando con triggers y me funciona de maravilla con el siguiente código en BEFORE INSERT en IbExpert, Trabajo con una BaseDatosGestion con dos Tablas:

una AlbaranRetirada pertenece a BaseDatosGestion
y la otra Carros pertenece a Base DatosGestion

Hago un Albarán de retirada de un numero de carros y me actualiza el número de carros en almacén como he dicho ambas tablas pertenecen a una BaseDatosGestion.

Código SQL [-]
            BEGIN
             As
             UPDATE CARROS CA
               SET CA.CarrosAlmacen = COALESCE (CA.CarrosAlmacen - NEW.NumeroCarros, 0 )

               Where ca.carro = new.CodigoCarro

Éste Codigo funciona perfecto, pero por motivos quería que la tabla por diversos motivos quería ponerla en una Base de datos distinga llamada BaseDatosMaestro.

Con lo que la TablaAlbaranRetirada, está en la BaseDatosGestion, mientras que la tabla Carros está en la BaseDatosMaestro.

Pero no sé cómo hacer el truco de hacer un Triggers donde hacer en un albarán de la Tabla Albarán que pertenece a BaseDatosGestion y me restara de la TablaCarros que pertenece a BaseDatosMaestro. si esto es posible.

Gracias.
Responder Con Cita
  #2  
Antiguo 11-02-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Poder, se puede. ¿Pero hay algún motivo que lo hace totalmente necesario?
Es que esa pregunta suena a algo similar a esto: "Tengo 2 coches, quiero que cuando cambie de marcha en uno de ellos, se cambie automáticamente de marcha en el otro".

Pero, bueno, lo que pides sería con "EXECUTE STATEMENT"
Responder Con Cita
  #3  
Antiguo 11-02-2023
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Hola Casimiro, he puesto un ejemplo que da a entender el ejemplo que pones de los dos coches, pero tengo dos bases de datos una BaseDatosMaestro, donde tengo las Tablas Maestro, (TablaClientes, TablaProductos, TablaProveedores...) y otra BaseDatosGestion donde tengo las tablas de Gestion como TablaPedidos,TablaVentas o TablasProducción....

Cuando diseñé el programa lo diseñé pensando en que sería mejor en dos BBDD, para no hacer una muy grande, no sé si acerté o no.
En el ejemplo que he puesto se podría en vez de usar dos coches usar uno, pero en otros ejemplos tendría que usar las dos bases de datos, intentaré buscar como usar "EXECUTE STATEMENT" , pero si pudieras ponerme un ejemplo sencillo o algunos enlaces os lo agracería

Gracias.
Responder Con Cita
  #4  
Antiguo 11-02-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por GINMARMENOR Ver Mensaje
Cuando diseñé el programa lo diseñé pensando en que sería mejor en dos BBDD, para no hacer una muy grande, no sé si acerté o no.
Te vas a complicar la vida enormemente, y sin motivo alguno. Cambia todo para usar una sola base de datos. Como sigas así con las dos BD va a ser una tortura. Cuando antes lo cambies, mejor.
Y no te preocupes por el tamaño de la BD, unos cuantos decenas de gigas no es nada.

Una simple búsqueda de EXECUTE STATEMENT en los foros:
Código SQL [-]
create or alter procedure SP_CUSTOMER
returns (
    CUST_NO integer,
    CUSTOMER varchar(25),
    COUNTRY varchar(15),
    CURRENCY varchar(20))
as
BEGIN
  FOR select
        customer.cust_no,
        customer.customer,
        customer.country
    from customer
    INTO :CUST_NO,
         :CUSTOMER,
         :COUNTRY
  DO
  BEGIN
       FOR EXECUTE STATEMENT 'SELECT CURRENCY FROM COUNTRY WHERE COUNTRY='''||:Country||''''
           ON EXTERNAL DATA SOURCE 'EMPLOYEE.FDB' AS USER CURRENT_USER PASSWORD 'masterkey'
       INTO :CURRENCY
       DO
       BEGIN
            suspend;
       END
  END
END
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Triggers BuenaOnda MS SQL Server 2 16-12-2009 19:05:27
triggers con mysql perico MySQL 1 19-12-2007 20:43:44
Triggers y SP Cañones Firebird e Interbase 4 29-04-2007 02:27:50
triggers nenufer Conexión con bases de datos 3 16-05-2006 08:17:08
triggers edy_aca Firebird e Interbase 5 26-08-2004 00:09:53


La franja horaria es GMT +2. Ahora son las 01:44:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi