您好,欢迎访问一九零五行业门户网

如果我从 MySQL 父表中删除一行会发生什么?

当从父表中删除该行时,如果子表中使用了该行的数据,那么mysql将因foreign key约束失败而抛出错误。可以用“customer”和“orders”两个表的例子来理解。这里,“customer”是父表,“orders”是子表。我们无法从“customer”表中删除子表“orders”中使用的行。可以通过从父表中删除值来演示,如下所示 -
mysql> select * from customer;+----+--------+| id | name |+----+--------+| 1 | gaurav || 2 | raman || 3 | harshit|| 4 | aarav |+----+--------+4 rows in set (0.00 sec)mysql> select * from orders;+----------+----------+------+| order_id | product | id |+----------+----------+------+| 100 | notebook | 1 || 110 | pen | 1 || 120 | book | 2 || 130 | charts | 2 |+----------+----------+------+4 rows in set (0.00 sec)
现在,假设我们尝试从父表“customer”中删除 id = 1 或 id = 2 的行(因为子表中使用了这两个行),那么 mysql 会抛出如下错误,因为外键约束失败。
mysql> delete from customer where id = 1;error 1451 (23000): cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, constraint `orders_ibfk_1` foreign key (`id`)references `customer` (`id`))mysql> delete from customer where id = 2;error 1451 (23000): cannot delete or update a parent row: a foreign key constraint fails (`query`.`orders`, constraint `orders_ibfk_1` foreign key (`id`)references `customer` (`id`))
以上就是如果我从 mysql 父表中删除一行会发生什么?的详细内容。
其它类似信息

推荐信息