mysql on update on delete
时间: 2024-04-25 14:19:32 浏览: 95
MySQL中的ON UPDATE和ON DELETE是用于定义外键约束时的两个选项。
ON UPDATE选项用于指定当主表中的主键值被更新时,从表中的外键值应该如何处理。常见的选项有:
- CASCADE:级联更新,即主表中的主键值更新时,从表中的外键值也会被更新。
- SET NULL:设置为NULL,即主表中的主键值更新时,从表中的外键值会被设置为NULL。
- SET DEFAULT:设置为默认值,即主表中的主键值更新时,从表中的外键值会被设置为默认值。
- RESTRICT:限制操作,即如果主表中的主键值更新时,从表中存在关联记录,则不允许更新操作。
ON DELETE选项用于指定当主表中的主键值被删除时,从表中的外键值应该如何处理。常见的选项有:
- CASCADE:级联删除,即主表中的主键值删除时,从表中的关联记录也会被删除。
- SET NULL:设置为NULL,即主表中的主键值删除时,从表中的外键值会被设置为NULL。
- SET DEFAULT:设置为默认值,即主表中的主键值删除时,从表中的外键值会被设置为默认值。
- RESTRICT:限制操作,即如果主表中的主键值删除时,从表中存在关联记录,则不允许删除操作。
这些选项可以在创建外键约束时使用,例如:
```
CREATE TABLE 表名 (
列名 数据类型,
...
FOREIGN KEY (外键列名) REFERENCES 主表名(主键列名) ON UPDATE 选项 ON DELETE 选项
);
```
相关问题
mysql 外键约束 on delete on update 怎么使用
在 MySQL 中,可以使用外键约束(Foreign Key Constraint)来保证数据表之间的一致性。当一个表中的数据被更新或删除时,可以通过设置外键约束来自动更新或删除相关的数据表中的数据。
以下是一个示例,展示如何使用外键约束:
假设我们有两个表,一个是 orders 表,包含订单信息,另一个是 customers 表,包含客户信息。orders 表的 customer_id 字段是一个外键,参照了 customers 表中的 id 字段。
我们可以使用以下语句来创建 orders 表:
```
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE
);
```
在上面的语句中,我们使用 FOREIGN KEY 关键字来创建外键约束。customer_id 列参照了 customers 表中的 id 列。ON DELETE CASCADE 和 ON UPDATE CASCADE 分别表示当 customers 表中的一条记录被删除或更新时,orders 表中相关的记录也会被删除或更新。
如果我们想要在 customers 表中的记录被删除时,orders 表中相关的记录也被删除,可以使用以下语句:
```
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE
);
```
同样地,如果我们想要在 customers 表中的记录被更新时,orders 表中相关的记录也被更新,可以使用以下语句:
```
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON UPDATE CASCADE
);
```
mysql 外键约束 on delete on update 有哪些参数,分别有什么用
MYSQL 外键约束 ON DELETE 和 ON UPDATE 可以有以下参数:
1. CASCADE:当父表中的行被删除或更新时,所有依赖于该行的子表中的相关行也将被删除或更新。
2. SET NULL:当父表中的行被删除或更新时,所有依赖于该行的子表中的相关行将被设置为 NULL。
3. NO ACTION:当父表中的行被删除或更新时,不会对子表中的任何行进行任何操作。
4. RESTRICT:当父表中的行被删除或更新时,如果存在任何依赖于该行的子表中的相关行,则不允许删除或更新父表中的行。
这些参数的作用如下:
1. CASCADE:当在父表中删除或更新一行时,所有相关的子表中的行都将被删除或更新。这样可以确保数据的完整性和一致性。
2. SET NULL:当在父表中删除或更新一行时,所有相关子表中的行将被设置为 NULL。这意味着您可以保留子表中的行,但需要注意,这可能会导致数据不一致。
3. NO ACTION:当在父表中删除或更新一行时,不会对子表中的任何行进行任何操作。这样可以防止删除或更新父表中的行,从而保护数据的完整性和一致性。
4. RESTRICT:当在父表中删除或更新一行时,如果存在任何相关的子表中的行,则不允许删除或更新父表中的行。这是一种保护数据完整性和一致性的方法。
阅读全文