如何删除主细表中主表的指定记录(100分)

  • 主题发起人 主题发起人 huhuhu_hu
  • 开始时间 开始时间
H

huhuhu_hu

Unregistered / Unconfirmed
GUEST, unregistred user!
如何删除主细表中主表的指定记录
 
如是使用比较大的数据库,
建议写触发器
 
能不能写一个例程序出来?。。。
 
首先外部关键字的问题要注意,保证没有外部关键字指向!
其次,要先删除细档,然后再删除主档!
 
我想可以手工将子表的数据删除,只是麻烦一点,在删除主表的记录时作一个关联,程序
可以自动将与主表中记录相关的子表中的记录全部找出来,此时先将子表中所有与主表中
的记录相关的记录全部删除后再删除主表的记录。应该是这样,或者用触发器,不过我没
用过,各高手用过的请指教!!!
 
必须先删除子表的记录,再删主表,建议写 STOREPROCEDURE.
或先删除主表的外健,就可以删除记录;
 
细表用Tquery连接
query.datasource:=table1//主表
query1.close;
query1.sql.clear;
qery1.sql.add('delete from 细表 where 细表.索引=:索引');
query1.execsql;
table1.delete;
 
用数据库的级联删除,写触发器
 
你用的是什么库呢:
你在建主细表时就应该将其外键规则置为“Delete any Dependent rows( CASCADE)(附表依赖主表存活)
”模式,那么你可以根据你的要求删除主表内容其附表内容也将由库自动完成删除工作,不必
向前几位那样麻烦,该交给数据库完成的活何必要手工来完成呢???
附外键存在规则有两种:
1:Disallow if Dependent Rows Exist(RESTRICT) (存在附表不能删除主表)
2:Delete any Dependent rows( CASCADE)(删除主表同时删除子表)
 
如果用三层,《Delphi5开发人员指南》配套光盘上有一个很好的解决办法!
 
?????啊?有这么麻烦吗?
我想:
1、开事务
2、先删除子表中与主表关联的全部记录
3、再删除主表的指定记录
4、提交事务

当中有一步失败了,全部操作都会回滚

也许我的理解有误,大家莫怪!
 
接受答案了.
 
后退
顶部