自定义而不是更新触发器

时间:2012-09-13 08:28:25

标签: sql sql-server sql-server-2008 triggers

您好我有以下触发器:

    ALTER TRIGGER [dbo].[BOOKVERNR_UPDATE]
ON [dbo].[BUCHUNG]
INSTEAD OF UPDATE
AS

BEGIN
SET NOCOUNT ON;

        INSERT INTO [BUCHUNG] (BOOKUID, BOOKVERNR, BUCHUNGSART_ID, VERANSTALTER, PERSONAL_ID,
        OPTIONSNUMMER, BUCHUNGSSTATUS, PERSONENZAHL, SERIE, THEMA, STORNO, UPDATE_DATE, UPDATE_USER, BEMERKUNG, V_EMAIL, V_TELEFON,
        KOSTENSTELLE, SERIENBOOKUID, THEMA_ENABLED, ABTEILUNG, LIEFERRAUM, PERSONENZAHLEXTERN, ABRECHNUNG, KSTR, RECHKONTO, RECHKST, RECHDST, URSPRUNG_ORIGINAL, ORIGINAL_ID)

        SELECT i.BOOKUID, '0', i.BUCHUNGSART_ID, i.VERANSTALTER, i.PERSONAL_ID,
        i.OPTIONSNUMMER, i.BUCHUNGSSTATUS, i.PERSONENZAHL, i.SERIE, i.THEMA, i.STORNO, GETDATE(), i.UPDATE_USER, i.BEMERKUNG, i.V_EMAIL, i.V_TELEFON,
        i.KOSTENSTELLE, i.SERIENBOOKUID, i.THEMA_ENABLED, i.ABTEILUNG, i.LIEFERRAUM, i.PERSONENZAHLEXTERN, i.ABRECHNUNG, i.KSTR, i.RECHKONTO, i.RECHKST, i.RECHDST, i.URSPRUNG_ORIGINAL,
        i.ORIGINAL_ID


        FROM INSERTED i
        JOIN DELETED d ON i.ID = d.ID
        WHERE i.BOOKVERNR <> d.BOOKVERNR


SET NOCOUNT OFF;
END

如果发生“BOOKVERNR”更新,触发器将使用新ID复制整行。只有在“BOOKVERNR”上发生更新时才会插入新行。

我的问题是,使用该触发器我无法更新其他列,除了例如“IF UPDATE(BOOKUID)”。但这不是我想要的。

有没有办法自定义触发器,以便我可以更新所有其他列,而不使用每列的“IF UPDATE”?

0 个答案:

没有答案