sql - 如何用一条sql删除主明细记录?

标签 sql delphi delphi-7

使用 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/

相关文章:

mysql - 按相关表列排序表的最快方法

sql - 获取字段首次更改为其当前值的日期

mysql - 具有内部连接和不同值的 SQL 计数

php - 从准备好的语句中获取数据

delphi - Spring4d中如何从ServiceLocator获取子接口(interface)实例?

sql - 监视 Delphi 应用程序执行的 SQL 查询

oracle - 如果使用 Oracle 数据库,Delphi 应用程序从 BDE 迁移的选项有哪些

delphi - 是否可以将 Form.Width 设置为 10000 像素?

delphi - 如何在 OnChange 事件之前获取 ComboBox ItemIndex?

html - Delphi TWebBrowser 作为 HTML 编辑器 - 获取字体属性