欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Sql随手笔记 » 正文

热门阅读

sqlserver大bug:表删除后表的触发器未删除

创建时间:2012年03月16日 16:10  阅读次数:(6760)
分享到:
今天在对比数据库的时候,发现有几个触发器总是同步不了。仔细查看之后,才发现这几个触发器所依附的表已经在之前被我删掉了。以前一直都没有发现这个问题,也觉的这是不可能发生的问题,所以在群中问了一大家,有朋友说,表删除后不一定会删除触发器,我信了,但总觉的不太可靠,因为以前都是直接删除表的,也没发现这样的问题。又觉的应该是我使用drop table的sql语句来删除的,是不是使用sql语句删除的表不会同时删除触发器呢,又特地做了一个测试,创建一个表,再创建一个表触发器,然后用drop table的方式删除表,结果触发器有被同步删除了。

说明,我这里说的表是dml触发器,不是ddl触发器。

然后发贴到csdn,结果没有朋友相信。

为了证明在我的电脑上确实出了该bug,又特地重新找来数据库备份文件,将该bug重现一次,并截图如下:


说明一下我的图片:
首先为了让两条sql的结果都显示在"结果"栏,我把输出结果调成了以文本形式显示。
为了证明我没有做作弊,我是将两个sql写一个查询分析器中一并执行的。
先看第一个sql:
select * from [dbo].[Cost_PreReceivable]
该sql直接返回错误:对象名  'dbo.Cost_PreReceivable' 无效。说明我这个表是不存在的。

然后第二个sql:
sp_helptext tu_Cost_PreReceivable
是显示tu_Cost_PreReceivable触发器的定义,从输出的结果可以看出,该触发器所依附的表确实是Cost_PreReceivable。

我也希望是我搞错了,望大家能帮我找出其中原因。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论4条
  • #1楼  评论人:匿名  评论时间:2012-3-16 17:12:38
  • 这是不可能的,不要发这种炒作的文章。
  • #2楼  评论人:匿名  评论时间:2012-3-18 21:58:13
  • 呵呵,不是我炒作,也希望楼上能解答我的疑惑!
  • #3楼  评论人:pingfan121  评论时间:2015-3-17 18:20:02
  • 我也遇到了这样的问题
  • #4楼  评论人:匿名  评论时间:2021-9-30 14:57:57
  • 我在SQL SERVER 2008 R2上试了,不会有这种问题。
发表评论:
留言人:
内  容:
请输入问题 64+80=? 的结果(结果是:144)
结  果: