使用 Delphi 7 和 interbase 7
是否可以在一条 SQL 语句中删除主详细记录及其所有嵌套的详细记录?
示例:
表1
ID - 整数
标题 - Varchar(80)
表2
ID - 整数
Table1_ID - 整数
标题 - Varchar(80)
表3
ID - 整数
Table2_ID - 整数
标题 - Varchar(80)
我想从表 1 中删除 ID 10,以及表 2 中与其匹配的所有记录 (Table1_ID),以及表 3 中与其匹配的所有记录 (Table2_ID)
如果我不能在一个 sql 中执行此操作,我该如何在多个 sql 中执行此操作(调用语句的正确顺序)?
最佳答案
你可以通过一些SQL按顺序删除Table3、table2和table1上的记录来完成。全部在一笔交易中完成,就像“独特的操作”一样。
一种替代方法是在删除表 1 上的一条记录时使用触发器删除表 2 上的相关记录,并在表 2 中使用触发器来删除表 3 上的相关记录。
另一种方法(如果数据库允许)是在删除 table1 上的记录时使用 ON CASCADE DELETE (或类似的)来删除 tabla2 和 table3 上的相关记录(请参阅有关 SGBD/数据库的帮助或文档)。
请原谅我的英语错误。这不是我的自然语言。
问候。
关于sql - 如何用一条sql删除主明细记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983876/