级联删除大有关问题,请高手
级联删除大问题,请高手!
我有两个表,在SQL里定义了级联删除
即表A与表B进行了级联更新与删除等的。A删除一条记录之后,B会跟着删除。
现在在B表里有一个触发器,是删除时触发的。
然后这个触发器要去读A表当前要被删除的这条记录的主键,可读不到。要怎么处理?
我通过日志分析,发现删除A表时,会先删除B表,删除完之后,才删除A表的。
按照这样,我B表里的触发器应该可通过关联的键,读到A表的主键,从而找到A表里当前操作的这条记录里的某个字段的数据的,为什么这边会不行呢?
请高手,有什么方法来解决?
------解决方案--------------------
试下反过来,不使用级联删除,在A表建触发器,来删除B表的记录、和找到A表相关的数据。
------解决方案--------------------
B表触发器是不是 INSTEAD OF 类型的?
如果是 AFTER 类型,要在删除后才触发,当然取不到原始数据了。
------解决方案--------------------
然后这个触发器要去读A表当前要被删除的这条记录的主键,可读不到。要怎么处理?
-----------------
要读取ID要在删除前赋值,或把逻辑封装在存储过程里,触发器不是用来得到结果集是处理业务逻辑并抛出异常等。
用触发器就别用级联删除,
SQL05以上版本存储过程时可直接Output
我有两个表,在SQL里定义了级联删除
即表A与表B进行了级联更新与删除等的。A删除一条记录之后,B会跟着删除。
现在在B表里有一个触发器,是删除时触发的。
然后这个触发器要去读A表当前要被删除的这条记录的主键,可读不到。要怎么处理?
我通过日志分析,发现删除A表时,会先删除B表,删除完之后,才删除A表的。
按照这样,我B表里的触发器应该可通过关联的键,读到A表的主键,从而找到A表里当前操作的这条记录里的某个字段的数据的,为什么这边会不行呢?
请高手,有什么方法来解决?
------解决方案--------------------
试下反过来,不使用级联删除,在A表建触发器,来删除B表的记录、和找到A表相关的数据。
------解决方案--------------------
B表触发器是不是 INSTEAD OF 类型的?
如果是 AFTER 类型,要在删除后才触发,当然取不到原始数据了。
------解决方案--------------------
然后这个触发器要去读A表当前要被删除的这条记录的主键,可读不到。要怎么处理?
-----------------
要读取ID要在删除前赋值,或把逻辑封装在存储过程里,触发器不是用来得到结果集是处理业务逻辑并抛出异常等。
用触发器就别用级联删除,
SQL05以上版本存储过程时可直接Output