Bases de Datos - TRIGGER AYUDA PORFAVOR SALE ERROR

 
Vista:

TRIGGER AYUDA PORFAVOR SALE ERROR

Publicado por PAOLA  (1 intervención) el 09/04/2008 19:31:23
HOLA NECESITO CREAR UN TRIGGER QUE CUANDO A LA TABLA DE PRODUCTOS SE MODIFICA EL PRECIO DE LISTA(ListPrice) AL PRODUCTO. A LA COLUMNA DE COLOR SE PONE UN COLOR(ROSA)...

LA COLUMNA DE COLOR TAMBIEN SE ENCUENTRA EN LA TABLA DE PRODUCTOS

ES MI PRIMER TRIGGER Y ESTO ES LO QUE LLEVO DE CODIGO, ME SALEN ERRORES

CREATE TRIGGER [productos1] ON [SalesLT].[Product]
AFTER INSERT,UPDATE AS
BEGIN
IF UPDATE(ListPrice)
SET [SalesLT].[Product]= 'Rosa'
WHERE [SalesLT].[Product].[ProductID] IN
(SELECT inserted.[ProductID] FROM inserted);
begin
UPDATE [SalesLT].[Product]
SET Color='Rosa'
end
END

ESTOY UTILIZANDO SQL SERVER y LA BASE DE DATOS ADVENTUREWORKS SI ALGUIEN ME PUEDE AYUDAR, SE LO AGRADECERE O DECIRME EN QUE ESTOY MAL, ESTOY APRENDIENDO Y ME GUSTARIA SABER MIS ERRORES, GRACIAS Y DE ANTEMANO LES AGRADESCO SU AYUDA! SALUDOS :-)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Respuesta

Publicado por Leopoldo Taylhardat (187 intervenciones) el 15/04/2008 14:28:29
Esto lo escribí hace un tiempo en este foro...

Saludos...

Aunque la sintaxis varía de acuerdo a la BD (dialecto de SQL) esto es más o menos la base...

CREATE TRIGGER nombre_trigger AFTER evento ORDER # ON tabla
REFERENCING [new] [old] AS [referencia] FOR EACH [row] [statement]
BEGIN
... proceso que necesites...
END

evento se refiere a INSERT, DELETE, UPDATE... el UPDATE en algunas BD puede ser aplicado a columna específica...
# se refiere al orden de secuencia para ejecutar el trigger...1,2,3,4,...
new old se refiere al buffer de datos para insert debe ser new, para delete debe ser old y para update te puedes referir al dato anterior como old o al dato nuevo como new...
se referencia con una palabra ej...
REFERENCING new AS nuevo
nuevo.columna_a
REFERENCING old AS anterior
anterior.columna_b...

for each row... significa que se activará el trigger para cada tupla que se actualice...
for each statement... significa que se ejecutará el trigger para toda la secuencia (una sola vez)... no importa cuantas tuplas se procesen...

normalmente se utiliza.... for each row...

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar