事务怎么实现级联删除\修改\插入我现在一个大的类别,还一个小的类别,怎么用事务实现实现级联删除\修改\插入

解决方案 »

  1.   

    不能的,你可以采用instead of触发器,这样在判断原有约束之前,先执行触发器,完成更新之后才判断约束;或者你使用约束级联
      

  2.   

    我的意思是说,如果在你事务里如果有需要回滚的时候,你得考虑触发器是否成功执行,因此你需要在触发器里添加或者不添加 rollback transaction
      

  3.   

    比如你前台要更新一个部门ID:研发2部。为研发3部
    该部门下已经有员工了,并且引用了“研发2部”这个ID外键级联更新和触发器的原理:
    当你更新部门表时,update 部门表 set 部门id='研发3部' where 部门id='研发2部' 
    会自动更新员工表,这些语句你看不到,但实际执行了更新员工表的代码事务没有这样的功能。
    只能保证你更新部门表这个动作是完成,还是回滚
    update 部门表 set 部门id='研发3部' where 部门id='研发2部' 
      

  4.   

    事务就是一组T-SQL语句组,遵循的是ACID就原子性,一致性,隔离性以及持久性,是站在更高的层面来看待数据,而数据之间的关系约束需要的是实体完整性和参考完整性来保证,而触发器也需要遵守约束的规则,当然先进行触发器在考虑约束,还是先考虑约束再考虑触发器,区分了instead of触发器和一般的触发器。总的来说,事务在保证约束以及触发器定义的约束的基础上来实现ACID法则,因此,你的问题还是得在触发器和约束中去寻找答案
      

  5.   

    解决级联的办法有这样一些,至少我能想到的:
    1. 建立对象之间的外键约束关系,利用SQL Server自带的约束级联关键词来操作。
    2. 如果不建立约束,那么可以使用一般的DML触发器来实现级联。
    3. 如果已经在建立了约束的基础上,又不是用约束级联的关键词,那么可以使用instead of型的DML触发器来实现。
    4. 事务中也可以做但效率不高