【问题标题】:Sql Server rows being auto inserted without a triggerSql Server 行在没有触发器的情况下自动插入
【发布时间】:2015-02-23 20:06:58
【问题描述】:

我在 sql server 中有一个表,如果我从中删除一行,则会插入一个新行,其中包含与我删除的数据相同的数据和用户 ID。此表上没有触发器。另外,我搜索了所有引用这个表的数据库对象,在数据库中没有任何地方引用这个表的触发器,只有一些存储过程,没有任何代码会导致这种行为。

要清楚,如果我运行这个查询:

delete from my_table where id = 1

id 为1 的行将被删除,但会插入一个与删除行具有相同用户ID 和日期的新行。不涉及应用程序代码,只是直接在数据库上运行的直接 sql delete 语句会导致此问题。

除了触发器之外还有什么可能导致这种情况发生?我以前从未遇到过这样的事情。

【问题讨论】:

  • 你怎么知道该行实际上被删除了?
  • 是插入了一个新行,还是一开始就没有被删除的同一行?也许有一个 INSTEAD OF 触发器仅用于删除...
  • @Lamak 因为我为具有该用户 ID 的行运行了一个选择语句,而原来的行已经消失了。
  • 又过了多久,“同一行”又被插入了?,你能运行探查器吗?
  • 然后我会按照@Lamak 的建议运行分析器跟踪。

标签: sql-server


【解决方案1】:

我花了很长时间,但我发现这是由一个“流氓”linq-to-sql dll 引起的,尽管它的父应用程序被杀死,但它仍在运行。

好消息是,没有什么奇怪的非触发方式可以在 SQL 中删除时插入行,所以我们现在都可以恢复正常生活,知道一切都原样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-03-19
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    相关资源
    最近更新 更多