SQL表我有以下触发:预过滤器与触发器
ALTER TRIGGER [dbo].[DIENSTLEISTUNG_Update]
ON [dbo].[DIENSTLEISTUNG]
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [DIENSTLEISTUNG] (BEZEICHNUNG, MENGENEINHEIT,
PREIS, BESCHREIBUNG, VORLAUFZEIT,
AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
UPDATE_USER, UPDATE_DATE, RUESTZEIT,
PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,FLAG)
SELECT BEZEICHNUNG, MENGENEINHEIT,
PREIS, BESCHREIBUNG, VORLAUFZEIT,
AZ_MO, AZ_DI,AZ_MI,AZ_DO,AZ_FR,
AZ_SA,AZ_SO,DIENSTLEISTUNGSART_ID,
UPDATE_USER,GETDATE(),RUESTZEIT,
PERMISSIONS, KONTRAKTPOSITION,ARTIKELNUMMER,
ANZAHL, BUCHUNGSHINWEIS, SONDERWUNSCH,
0
FROM INSERTED
UPDATE DIENSTLEISTUNG
SET DIENSTLEISTUNG.FLAG = 1
FROM DIENSTLEISTUNG
INNER JOIN INSERTED
ON INSERTED.ID = DIENSTLEISTUNG.ID
SET NOCOUNT OFF;
END
的触发拷贝整行,如果用原来的行中的变化发生在一个新的ID。它还在新旧行中设置了一个标志(旧行获得FLAG = 1,新行FLAG = 0)。
是否可以从触发器内过滤这些行,以便它只返回FLAG = 0的新行?
如果是,我该怎么做?
在此先感谢!
你的触发器不是“他”,它不会“返回行”。我也不明白插入标志= 0的目的,然后在插入后将其更新为1。你的意思是先执行插入,并将标志设置为0? – 2012-07-17 13:25:13