error:512 severity:16 state:1 触发器 错误总结
2009-12-30 11:48
447 查看
SQL SERVER数据库问题,错误描述:Subquery returned more than 1 value. This is illegal when the subquery follows =, !=, <, <= , >, >=, or when the subquery is used as an expression.子查询返回的值多于一个,在用一些操作符或用做表达式时是不允许的。
错误很明显,无非就是把操作符换成 in 就解决问题。
理论上是这样,但现实是残酷的,依然不行,这就郁闷了,找了半天,SQL事件探查器搞了半天,也用上,确实是发生在删除时触发器上出的错,不应该啊,最后找到执行出错的sql语句,在查询分析器中执行,终于找到了真凶。。。。。
是触发器的问题,这个触发器执行时又触发了另一个触发器,错误根源在这,改成in解决。
但是还有个问题,如我在删除用户时,触发器执行删除所有物品,delete product where pid = (select userid from deleted),子查询返回肯定是唯一的啊;而在物品删除中,触发删除所有物品的留言,delete 物品留言表 where id = (select pid from deleted) ,也是唯一的。按理说,删除一个用户,触发器中获取它的id,根据这个id删除它的所有物品,这样删除一个物品时,再由物品id删除留言,都应该是正常的啊。
但是它却不正常,估计是我们删除一个用户时,连带删除这个用户的多个物品这个操作时,是删除的所有的物品,填充了deleted表之后,才触发触发器,而不是删除一个物品,填充一次deleted表,触发一次。这样才造成删除物品留言时的error:512错误。。。。。。。
清静多了。。。。。。。。
错误很明显,无非就是把操作符换成 in 就解决问题。
理论上是这样,但现实是残酷的,依然不行,这就郁闷了,找了半天,SQL事件探查器搞了半天,也用上,确实是发生在删除时触发器上出的错,不应该啊,最后找到执行出错的sql语句,在查询分析器中执行,终于找到了真凶。。。。。
是触发器的问题,这个触发器执行时又触发了另一个触发器,错误根源在这,改成in解决。
但是还有个问题,如我在删除用户时,触发器执行删除所有物品,delete product where pid = (select userid from deleted),子查询返回肯定是唯一的啊;而在物品删除中,触发删除所有物品的留言,delete 物品留言表 where id = (select pid from deleted) ,也是唯一的。按理说,删除一个用户,触发器中获取它的id,根据这个id删除它的所有物品,这样删除一个物品时,再由物品id删除留言,都应该是正常的啊。
但是它却不正常,估计是我们删除一个用户时,连带删除这个用户的多个物品这个操作时,是删除的所有的物品,填充了deleted表之后,才触发触发器,而不是删除一个物品,填充一次deleted表,触发一次。这样才造成删除物品留言时的error:512错误。。。。。。。
清静多了。。。。。。。。
相关文章推荐
- SQL Server 2005安装SP4失败(1): ERROR NUMBER 29534/Error: 5118, Severity: 16, State: 1
- 触发器错误 :消息 512,级别 16,状态 1 子查询返回的值不止一个
- 总结JDBC连接SQLServer的错误Error establishing socket
- 总结JDBC连接SQLServer的错误Error establishing socket
- 触发器中 约束值,返回指定错误:RAISERROR('庫存不能為負數!',16,1)
- Error: 17172, Severity: 16 SNIInitialize() failed with error 0x2.
- Data Flow ->> Excel Connection遇到错误:[Excel Source [16]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.....
- flask 学习错误总结 (sqlite3.OperationalError) no such table / no such column
- PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误
- Error: 9001, Severity: 21, State: 5 The log for database 'xxxx' is not available
- error while loading shared libraries 错误解决办法总结,
- 总结JDBC连接SQLServer的错误Error establishing socket
- SQLSERVER 2008 restore database 错误一列(ocrr Msg 3176, Level 16, State 1, Line 1)
- Error setting value Method "setAge" failed for object ..Ljava.lang.String 错误总结
- 关于quartusII 错误 Error: Current license file does not support the EP*** device 错误原因总结
- Android之eclipse错误 error opening trace file: No such file or directory (2)解决办法总结
- error while loading shared libraries 错误解决办法总结,
- View Composer agent initialization state error (16): Failed to activate the software license
- error while loading shared libraries 错误解决办法总结,
- 出现 DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9 错误的原因及解决方法