点一个按钮要删除5个表中的记录,其中一个表的主键是另外4个表的外键,怎么实现
来源:百度知道 编辑:UC知道 时间:2024/05/18 20:10:45
连续执行5个SQL语句,还是建一个触发器,具体怎么做
这个触发器好难啊,谁帮我写一下,我再加50分,表是这样的,有6个表,叫a,b,c,d,e,f吧,a表的主键都是b,c,d,e,f的外键,b表的主键都是c,d,e,f表的外键,b表删除一条数据时触发c,d,e,f表也删除一条数据,删除条件是这4个表的外键满足前面两个表的主键
这个触发器好难啊,谁帮我写一下,我再加50分,表是这样的,有6个表,叫a,b,c,d,e,f吧,a表的主键都是b,c,d,e,f的外键,b表的主键都是c,d,e,f表的外键,b表删除一条数据时触发c,d,e,f表也删除一条数据,删除条件是这4个表的外键满足前面两个表的主键
我给你思路吧.代码你自己根据你的情况写:
你的这个情况.无非就是这几次实现方式:
1.直接在程序里删5条记录.在程序用SqlTransaction处理事务.
2.在数据库用存储过程+事务.
3.在数据库用触发器.
现在我们一个一个分析.
先说第二个.针对哪张表做delete触发器?得先删除四张外键表.再删主键表吧?如果这样儿的话.就是得做4个触发器?那我只想删其中一张表的内容.此时怎么办?不知道我分析的对不对.暂且认为是对的吧.所以这个方案不可用.
再说第一个.用程序的话维护不方便.如果某天要改为不删其中一张怎么办.去程序里改?而且在程序中用SqlTransaction.据说是不如数据库中的事务安全.
所以建议写数据库存储过程+事务.程序里直接调用存储过程就OK.如果需求有改动.直接改存储过程就OK.
虽然用SQL语句的话可能简单点,但还是用触发器比较保险
存储过程也可以
触发器
对!用触发器,安全,速度快!