注册 登录
编程论坛 Delphi论坛

求帮助 代码怎么写

laishiking 发布于 2011-05-15 17:42, 614 次点击
我有一张表格 是家庭成员的  里面有
姓名   称谓    工作部门
张三   1313    323
李四   123     2222
王五   123     123
还有一张表格  是收入支出表
日期   经手人(是由家庭成员里面出来的)   收支类型   项目   
2111   张三                                 收入     11
2222    李四                               收入       12
111     王五                                 收入      22

当我删除家庭成员中的某一个姓名  时     收入支出表也会被删除    这个代码怎么写  谢谢
1 回复
#2
aaa0008302011-05-17 19:15
方法一:这个可以在程序里做控制,在程序里建一张临时表,比如说在程序查询的时候做下数据表的检查,将临时表和原数据表比对一下,进而删除对应的支出表

方法二:在数据库里将家庭成员表的‘姓名’和支出表的‘经手人’字段设为主键,在删除的家庭成员表的SQL语句中加上关键字 CASCADE ,表示级联删除,即在删除一个表的时候,对应的另一个表的相应的记录也会被被删除,但支出表的‘经手人’字段需要来自家庭程成员表,要有外键的约束

方法三:在程序中或者数据库里建立一个触发器,在删除家庭成员表的记录的时候,会自动把相应的支出表的记录也删除,我个人认为这种方法最好,下面是SQL语句:

        Create trigger DD on 家庭成员表
        after Delete
        as
          begin
            delete from 支出表 where 经手人 = (select 姓名 from Deleted )   
          end
 该语句在 SQL2000 及以上都可以
1