次の SQL トリガーがあります。
ALTER TRIGGER [dbo].[DIENSTLEISTUNG_Update]
ON [dbo].[DIENSTLEISTUNG]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [DIENSTLEISTUNG]
(DESCRIPTION, QUANTITY,
PRICE, AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
UPDATE_USER, UPDATE_DATE,
PERMISSIONS, KONTRAKTPOSITION,ITEMNUMBER,
PRIORITY, VALID)
SELECT DESCRIPTION, QUANTITY, PRICE AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,SERVICETYPE_ID, UPDATE_USER,GETDATE(),
PERMISSIONS, KONTRAKTPOSITION,ITEMNUMBER, PRIORITY, 'Y',VALID
FROM INSERTED
UPDATE SERVICE
SET VALID = 'N'
FROM SERVICE
INNER JOIN INSERTED ON INSERTED.ID = SERVICE.ID
SET NOCOUNT OFF;
END
元の行が変更された場合、Trigger は行全体を新しい ID でコピーします。ここまでは順調ですね。PRICE
またはDESCRIPTION
が更新された場合にのみ、トリガーが新しい行を作成するようにします。PRIORITY
またはまたは他の列で更新を行うとITEMNUMER
、トリガーは行を更新するだけで、新しい行は作成しません。
どうやってやるの?