【问题标题】:How I can have INSTEAD OF INSERT and AFTER INSERT inside the same trigger? (sql server)如何在同一个触发器中拥有 INSTEAD OF INSERT 和 AFTER INSERT? (SQL服务器)
【发布时间】:2011-08-05 17:56:03
【问题描述】:

INSTEAD INSERT 和 AFTER INSERT 是否可能在同一个触发器中?

CREATE TRIGGER tgInsertCompare
   ON  trigger_insert_teste
   INSTEAD OF INSERT
    AS
        DECLARE @testeID2 int
        SET @testeID2 = (SELECT TOP 1 id FROM trigger_insert_teste ORDER BY id DESC)
        PRINT(@testeID2)
    GO

    AFTER INSERT
    AS
    BEGIN

    SET NOCOUNT ON;

    DECLARE @testeID int
    SET @testeID = (SELECT TOP 1 id FROM trigger_insert_teste ORDER BY id DESC)
    PRINT(@testeID)
    END
    GO

使用 SQL Server 2008。

【问题讨论】:

  • 这个问题是写出来的,所以我们不能真正帮助你。请包含不那么笼统以至于没有意义的代码。我想不出在任何情况下我都想为同一张桌子做一个代替和一个之后。但从你的例子来看,我担心你正在编写一个触发器,旨在一次只处理一条记录,这是一种 sql 反模式,可能会导致数据完整性问题。

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


【解决方案1】:

不,但你为什么需要?如果您自己控制插入(使用INSTEAD OF),您应该能够将AFTER INSERT 代码添加到末尾。

【讨论】:

  • @robinson 我需要在插入表格之前获取ID,然后我需要在表格中插入新的ID,你明白吗?
  • @soamazing:您上面的代码从不执行插入操作。您如何做到这一点(无论是手动 ID 还是身份/默认 ID)应该很容易弄清楚您是否可以提供更有意义的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多