mysql删除时级联语句,MySQL删除级联

MySQL的删除级联

当我们从父表中删除行时,MySQL中的ON DELETE CASCADE子句用于自动从子表中删除匹配的记录。这是与外键有关的一种引用动作。

假设我们创建了两个带有外键关系的FOREIGN KEY的表,使这两个表成为父级和子级。接下来,我们为一个FOREIGN KEY定义一个ON DELETE CASCADE子句,必须将另一个FOREIGN KEY设置为成功进行级联操作。如果仅为一个FOREIGN KEY子句定义ON DELETE CASCADE,则级联操作将引发错误。

MySQL ON DELETE CASCADE示例

让我们了解如何在MySQL表中使用ON DELETE CASCADE子句。首先,我们将创建两个名为Employee和Payment的表。这两个表都通过带有删除级联操作的外键关联。在这里,Employee是父表,Payment是子表。以下脚本创建两个表及其记录。

表:员工

以下语句创建一个表Employee:

接下来,执行插入查询以填充记录。

执行SELECT查询以将数据验证到表中,如下所示:

mysql-on-delete-cascade.png

表:付款

下面的语句创建一个付款表:

接下来,执行插入语句以将记录填充到表中。

执行SELECT查询以将数据验证到表中,如下所示:

mysql-on-delete-cascade2.png

让我们从父表Employee中删除数据。为此,请执行以下语句:

上面的语句将删除emp_id = 102的员工记录,并将数据引用到子表中。我们可以使用SELECT语句验证数据,该语句将提供以下输出:

mysql-on-delete-cascade3.png

在上面的输出中,我们可以看到所有引用emp_id = 102的行均已从两个表中自动删除。

如何通过ON DELETE CASCADE操作查找受影响的表?

有时,在从表中删除记录之前,我们想通过ON DELETE CASCADE引用操作来了解受影响的表。我们可以通过在information_schema数据库中的referential_constraints中进行查询来找到此信息,如下所示:

下面的语句使用employeedb数据库中的ON DELETE CASCADE规则生成有关与Employee表关联的表的结果:

执行完上述命令后,我们将获得以下输出:

mysql-on-delete-cascade4.png

MySQL的更新级联

当我们更新父表中的行时,MySQL中的ON UPDATE CASCADE子句用于自动更新子表中的匹配记录。以下示例对其进行了更清晰的说明。

首先,我们需要使用ALTER TABLE语句在“付款”表中添加ON UPDATE CASCADE子句,如下所示:

它将给出以下输出:

mysql-on-delete-cascade5.png

在下面的脚本中,我们将更新“父表”中员工的ID,它也会自动在子表中反映此更改:

验证Employee和Payment表的内容,我们将看到emp_id列值将成功更新。

mysql-on-delete-cascade6.png

0

相关文章:Python MySQL-更新表 Python MySQL-更新表 UPDATE对 […]...

MySQL版本 MySQL版本 版本控制是在开发和发布时将唯一的版本名称或编号分类到唯一的一组软件程序的过程。表示软件或程序的 […]...

MySQL显示/列表数据库 MySQL显示/列出数据库 当我们使用MySQL服务器时,通常的任务是显示或列出数据库,显示特定数据库中的表以 […]...

MySQL在重复密钥更新上插入 MySQL在重复密钥更新上插入 Insert on Duplicate Key Update语句是MySQL中 […]...

MySQL ORDER BY子句 MySQL ORDER BY子句 MYSQL ORDER BY子句用于按升序或降序对记录进行排序。 句法:...

MySQL BETWEEN条件 MySQL BETWEEN条件 MYSQL BETWEEN条件指定如何从特定范围内的表达式检索值。它与SELE […]...

MySQL主键 MySQL主键 MySQL主键是字段的单个或组合,用于唯一地标识表中的每个记录。如果该列包含主键约束,则它不能 […]...

MySQL导出和导入数据库 MySQL导出和导入数据库 我们如何在MySQL中导出和导入数据库? MySQL中的数据库导出和导入是将数据从 […]...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值