在 Master/detail 中,当 master 主键被删除时,有什么办法让相应的 Detail 值也自动删除(100分)

  • 主题发起人 主题发起人 PDF
  • 开始时间 开始时间
P

PDF

Unregistered / Unconfirmed
GUEST, unregistred user!
在 Master/detail 中,当 master 主键被删除时,有什么办法让相应的 Detail 值也自动删除,要求:不要用触发器
 
如果数据库支持级联删除的话,你可以在数据库级别上设置字段的关联关系,
比如access就可以把两个表设为主从关系,并可设置关系类型,可以级联删除,
级联修改的...不用写代码就能实现...

要是dbf什么的,就在beforedelete删除子表相应的纪录....
 
这样不符合关系数据库原理吧。
你把主表当成从表算了。。呵呵
 
做存储过程来删除吧
在存储过程中间开事务
 
这样的问题我曾经也碰过,主表与子表关联不就可以了吗?,不过为了保证完整性
在删除之前可以采用事务处理,待主表与子表都删除后,再提交事务,否则回滚事务
记住,不要忘记给我加分。
 
用storeprecedure 或者trigger来完成你的任务
 
1.支持级联删除的数据库:打开DBD,通过引用完整性(Referential Constraints)对话话框选择“Delete Operation”。
2.不支持级联删除的数据库:最好利用数据模块,在数据模块中建立一个简单的(删除)方法,然后在程序中的任何地方调用。(非常简单实用)
 
先删除从表,然后再删除主表,这样就行了:
with query1 do
begin
close;
sql.clear;
sql.add('delete from detail where id=:id')
parambyname('id').asinteger:=masterid.value;
end;
master.delete;
 
多人接受答案了。
 
后退
顶部