Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Triggers (SQL server) (http://www.forosdelweb.com/f21/triggers-sql-server-231443/)

ToRu 14/09/2004 14:36

Triggers (SQL server)
 
Hola!
Después de haber estado buscando por el foro sobre los triggers, sigo sin poder hacer un trigger que me permita una actualización en cascada en varias tablas
- Clientes
- Empleados
- Pedidos
- Compañia_envio
- Detalle_pedido
- Proveedores
- Productos
- Categoria

Lo que tengo que hacer, es que cuando realice una actualización en un campo, lo haga de forma automática en las otras tablas, pero no sé como relacionar una tabla con otra.
Gracias!

Mithrandir 14/09/2004 14:52

Por que no nos muestras lo que tienes?

El chiste es usar la tabla INSERTED y de ahi obtener todo lo necesario para hacer el INSERT/UPDATE con algo como:

INSERT INTO tabla
SELECT campo1, ...
FROM INSERTED

ToRu 15/09/2004 02:21

hola, weno parece fácil , pero por más que he buscado información en internet, no se ni como empezar el trigger, ni donde poner lo de from inserted, ni nada, sorry :no:

peloteitor 15/09/2004 02:30

Mira en la ayuda

ToRu 15/09/2004 02:51

weno ya tengo hecho algo, no sé si estará bien o mal:

Código:

create trigger actualizacion_cascada
on Clientes
for update as
if update(Cod_cliente)
begin
          update Pedidos
          set Cod_cliente = inserted.Cod_cliente
          from Pedidos, deleted, inserted
          where deleted.Cod_cliente = Pedidos.Cod_cliente
end

Es lo único que se me ocurre como actualizacion en cascada, alguna idea?

Mithrandir 15/09/2004 15:23

En efecto, asi es como se debe hacer.

Unicamente yo cambiaría el
Código:

from Pedidos, deleted, inserted
por un
Código:

from pedidos INNER JOIN inserted
Deleted no lo necesitas, y usar inner joins es mas eficiente que usar producto cartesiano (la coma)


La zona horaria es GMT -6. Ahora son las 19:26.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.