从本地表中将TOP 100 INSERT INTO链接服务器,然后删除本地表中插入的行?

时间:2018-11-13 16:02:32

标签: sql sql-server triggers linked-server

有人知道该怎么做吗?现在,我在本地表上创建了一个触发器:

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "service1",
      "image": "myapp/service1:latest",
      "essential": true,
      "memoryReservation": 128,
      "portMappings": [
        {
          "hostPort": 8080,
          "containerPort": 8080
        }
      ],
      "linuxParameters": {
        "capabilities": {
          "add": [
            "SYS_PTRACE"
          ]
        }
      }
    }
  ]
}

然后我将执行以下查询:

CREATE TRIGGER TRG_AUD_DEL
ON [LocalTable]
FOR DELETE
AS
    INSERT INTO [LinkedServerTable] (columns, columns2)
        SELECT
            (Columns, Columns2)
        FROM DELETED

但是我的问题是,如果插入不起作用怎么办?例如由于超时或链接服务器停机。仍会删除本地表中的记录吗? (我希望不会)

1 个答案:

答案 0 :(得分:3)

如果触发器失败,则会回滚 entire 事务。这意味着,如果触发器中的链接服务器上的INSERT失败,则DELETE也将回滚,并且其中不删除的行。