色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql外鍵set null怎么用

黃文隆2年前11瀏覽0評論

MySQL 中的外鍵約束 (FOREIGN KEY) 是用來保證數(shù)據(jù)的完整性的。其中,SET NULL 級聯(lián)操作被廣泛使用。當你刪除或更新主鍵記錄時,由外鍵引用的從表記錄會發(fā)生什么呢?MySQL提供了SET NULL的操作,可以將相關從表記錄的外鍵設置為NULL。本篇文章將詳細介紹如何使用MySQL中的SET NULL級聯(lián)操作。

CREATE TABLE `customer` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
);
CREATE TABLE `order` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`customer_id` INT NOT NULL,
`order_date` DATE NOT NULL,
CONSTRAINT `customer_order_fk`
FOREIGN KEY (`customer_id`)
REFERENCES `customer`(`id`)
ON DELETE SET NULL
);

上述代碼將創(chuàng)建兩個表,其中`order`表中的`customer_id`是`customer`表的外鍵約束。同時,在定義`customer_order_fk`外鍵約束時,使用了`ON DELETE SET NULL`,表明當`customer`表中的記錄被刪除時,相關的`order`表中的記錄的`customer_id`列將被設置為NULL。

看下面的例子:

INSERT INTO `customer`(`name`) VALUES ('Tom');
INSERT INTO `order`(`customer_id`, `order_date`) VALUES (1, '2022-01-01');
-- 刪除相關“Tom”記錄
DELETE FROM `customer` WHERE `id` = 1;
-- 查詢order表中的數(shù)據(jù)
SELECT * FROM `order`;

上述代碼將先向數(shù)據(jù)庫中的兩個表中插入數(shù)據(jù),然后刪除`customer`表中`id = 1`的記錄。最后,查詢`order`表中的數(shù)據(jù)。這時,結(jié)果為:

+----+-------------+-------------+
| id | customer_id | order_date  |
+----+-------------+-------------+
|  1 |        NULL | 2022-01-01  |
+----+-------------+-------------+

可以看到,`order`表的`customer_id`列被自動設置為NULL,保持了數(shù)據(jù)的完整性。

SET NULL級聯(lián)操作對于數(shù)據(jù)庫的性能、數(shù)據(jù)完整性等方面都有一定的影響,需要慎重使用。