【问题标题】:Update trigger is not working as expected更新触发器未按预期工作
【发布时间】:2012-08-29 11:14:15
【问题描述】:

我有以下触发器:

 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, ABRECHNUNG, KSTR, RECHKONTO, 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.ABRECHNUNG, i.KSTR, i.RECHKONTO, i.RECHDST, i.URSPRUNG_ORIGINAL,
        i.ORIGINAL_ID


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


        IF UPDATE (BOOKVERNR)

        UPDATE b
        SET BOOKVERNR = i.BOOKVERNR 
        FROM BUCHUNG b
        JOIN INSERTED i ON i.ID = b.ID

SET NOCOUNT OFF;      
END 

如果原始行发生更改,触发器会使用新 ID 复制整行。到目前为止,它工作正常。 但是出了点问题,因为 PERSONENZAHL_EXTERN 和 RECHKST 不正确。

看图:

第一行是旧行。第二行是插入的行。我不知道出了什么问题。也许你可以帮我解决这个问题。

提前致谢

【问题讨论】:

  • 不清楚您期望什么,而不是我们看到的值。
  • 我复制了整行,因此在新行中,PERSONENZAHLEXTERN 处也应为“0”,RECHKST 处为“000000”,而不是 NULL。 ?

标签: sql sql-server-2008 triggers


【解决方案1】:

您的插入语句只是缺少这两列。添加它们,您将拥有自己的价值观。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多