我现在要实现对数据库中多个表中相互关联的记录的删除:具体情形如下:
有A,B 两数据表;
其中A中至少包含 id, spec 两个字段.
....B........ spec字段;
意思就是说:A,B两表通过字段SPEC相互关联起来;
现在我要删除表A,B中的关联记录条件是:当A表的ID等于某值时;
这个语句在access数据库中是怎么实现的呢???
有A,B 两数据表;
其中A中至少包含 id, spec 两个字段.
....B........ spec字段;
意思就是说:A,B两表通过字段SPEC相互关联起来;
现在我要删除表A,B中的关联记录条件是:当A表的ID等于某值时;
这个语句在access数据库中是怎么实现的呢???
解决方案 »
- 这个什么错误啊!!(546): Identifier redeclared: 'Tfrm_gate.SpeedButton2Click'
- HELP!有关关联文件出的问题
- !!!!!!100分求奇思妙想编程序这本书电子版?=====
- 答对就给分,html help workgroup的问题
- 散分,俺也两角了^_^谢谢大家的帮助.
- 有个基本问题,大家帮我看看!
- MDI子窗体显示时有一个明显的由小到大的变化过程,看起来很不舒服,请教该如何解决?
- 能不能帮我改一下系统
- 感动~~~我寄出去请朋友修改的代码有回音了。。。如果还有朋友愿意帮助我修改,请留下你的E-MAIL,(up有分)
- 关于线程和资源锁定的问题
- 学生问题::
- 没分了,各位大虾帮忙。想实现在下载文件的时候不完全下载,做到只要开始下载,就停止下载
这样你在删除A中的数据时,如果有关联数据在B中,则B中的数据将自动被删除。具体》
工具->关系
选中表A和B, 点击添加,关闭
在关系图中,选择A的spec字段拉到B的Spec字段,出现编辑关系窗口,选择实施参照完整性,选择级连删除相关记录。点击创建即可。
注意,表B中的spec字段中的值必须在表A的spec字段中有相应的值对应才那创建关系。nice day
例:
try
if not DataModule1.ADOConnection1.InTransaction then
DataModule1.ADOConnection1.BeginTrans;
with adoquery1 do
begin
close;
sql.clear;
sql.add('delete from B where spec = 100');
execsql;
close;
sql.clear;
sql.add('delete from A where spec = 100');
execsql;
end;
DataModule1.ADOConnection1.CommitTrans;
ShowMessage('删除成功');
Except
on e:exception do
begin
if DataModule1.ADOConnection1.InTransaction then
DataModule1.ADOConnection1.RollbackTrans;
MessageDlg('删除错误,操作被取消!'+#13+e.Message, mtError,[mbOk], 0);
exit;
end;
end;
//这样删除就可以保证你的表内容不会因为错误而出现不一致的情况了