zoukankan      html  css  js  c++  java
  • error:512 severity:16 state:1 触发器 错误总结

      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错误。。。。。。。

    清静多了。。。。。。。。

     

     

  • 相关阅读:
    java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
    project configuration is not up-to-date with pom.xml
    消息列队5
    消息列队4
    消息列队3
    聊聊常见的数据库架构设计方案?
    消息队列2
    消息队列1
    搜索引擎5
    搜索引擎4
  • 原文地址:https://www.cnblogs.com/forcertain/p/1635843.html
Copyright © 2011-2022 走看看