复制时插入带有标识列的表会导致 SQL Server 出错

新手上路,请多包涵

我的数据库中有一个表 A_tbl 。我在 A_tbl 上创建了一个触发器来捕获插入的记录。触发器正在我的队列表中插入记录 B_tbl 。此表有一个 Identity 列,其属性“不用于复制”为 1。

  • A_tbl (Id, name, value) 以 Id 作为主键
  • B_tbl (uniqueId, Id) 与 uniqueId 作为 Identity

执行此操作的触发代码:

 Insert into B_tbl (Id)
    select i.Id from inserted

现在我的表“B”被复制到另一个数据库服务器,现在当我插入表“A”时,它导致了这个错误:

当 IDENTITY_INSERT 设置为 ON 或复制用户插入 NOT FOR REPLICATION 标识列时,必须为表“B_tbl”中的标识列指定显式值。 (来源:MSSQLServer,错误号:545)

请帮我解决这个问题。

原文由 agm92 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 442
1 个回答

只是为喜欢我的人添加一个可能的陷阱,他们按照书本做了所有事情并且仍然得到了信息。

检查插入时的触发器。他们可能会在执行没有显式标识列值的代码时尝试创建更多行。

如果是这种情况,请禁用触发器(或删除并重新创建它)。

原文由 Vadim Berman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进