DB2 - trigger en db2

 
Vista:

trigger en db2

Publicado por Alejandra (1 intervención) el 04/11/2008 19:47:16
hola chicos y chicas, espero que me puedan ayudar con ésto. estoy moviendo un trigger de microsoft SQL 2005 a db2 9.5 pero he tenido muchos problemas en entender la lógica del trigger dentro de db2, ésto es lo que quiero pasar:

básicamente es un trigger de réplica a otras tablas y de actualización en la misma. porfavor digánme si ésto se puede o tengo que utilizar varios triggers o que un trigger mande a llamar a un procedimiento almacenado o algo.

CREATE TRIGGER lo_registra_huella ON FingerPrints
FOR INSERT
AS BEGIN
DECLARE
@Nuevo_Folio int,
@FingerID nvarchar(50),
@Inserto_Lector bit,
@Folio_Original int,
@Base_Origen char(5),
@Concatenado nvarchar(50),
@Clave_Caracter char(10)

SELECT @Nuevo_Folio = MAX(Folio) FROM FingerPrints)+1
SELECT @FingerID = FingerID, @Inserto_Lector = Inserta_Lector, @Base_Origen = Base
FROM Inserted

UPDATE FingerPrints
SET FingerPrints.Folio = @Nuevo_Folio
WHERE FingerPrints.FingerID = @FingerID AND FingerPrints.Folio = 0

IF @Inserto_Lector = 1
BEGIN
UPDATE FingerPrints
SET FingerPrints.FingerID = RTRIM(@FingerID)+'-' +RTRIM(CONVERT(nvarchar(10),@Nuevo_Folio))
WHERE FingerPrints.FingerID = @FingerID AND FingerPrints.Folio = @Nuevo_Folio

INSERT INTO FingerPrints99 (ID, Features, FingerID, Folio, Base, Inserta_Lector)
SELECT ID, Features,FingerID, Folio,Base,Inserta_Lector
FROM FingerPrints
WHERE FingerPrints.FingerID = RTRIM(@FingerID)+'-'+RTRIM(CONVERT(nvarchar(10),@Nuevo_Folio)) AND FingerPrints.Folio = @Nuevo_Folio

INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'GDL', 0,@Base_Origen, CAST(@FingerID AS int))
INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'CJS', 0,@Base_Origen, CAST(@FingerID AS int))
INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'AGU', 0,@Base_Origen, CAST(@FingerID AS int))
INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'DGO', 0,@Base_Origen, CAST(@FingerID AS int))
INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'MTY', 0,@Base_Origen, CAST(@FingerID AS int))
INSERT INTO dedos_pasados VALUES (@Nuevo_Folio, 'BJX', 0,@Base_Origen, CAST(@FingerID AS int))
END ELSE
IF @inserto_lector = 0
BEGIN
INSERT INTO FingerPrints99 (ID, Features, FingerID, Folio, Base, Inserta_Lector)
SELECT ID, Features,FingerID, Folio,Base,Inserta_Lector FROM FingerPrints
WHERE FingerPrints.FingerID = @FingerID AND FingerPrints.Folio = @Folio_Original

INSERT INTO dedos_pasados VALUES (@Folio_Original, 'GDL', 0,@Base_Origen, CAST(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)))
-- INSERT INTO dedos_pasados VALUES (@Folio_Original, 'CJS', 0,@Base_Origen, CAST(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)) )
INSERT INTO dedos_pasados VALUES (@Folio_Original, 'AGU', 0,@Base_Origen, cast(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)))
INSERT INTO dedos_pasados VALUES (@Folio_Original, 'DGO', 0,@Base_Origen, cast(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)))
INSERT INTO dedos_pasados VALUES (@Folio_Original, 'MTY', 0,@Base_Origen, cast(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)))
INSERT INTO dedos_pasados VALUES (@Folio_Original, 'BJX', 0,@Base_Origen, cast(left(@FingerID, CHARINDEX('-', @FingerID) -1) AS NUMERIC(6)))
END
END
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