欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 外鍵約束添加數據

江奕云2年前8瀏覽0評論

mysql數據庫的外鍵約束是用來保證關聯表之間數據的一致性和完整性的。

當我們需要添加數據到關聯表中時,注意添加的數據必須滿足外鍵約束的要求。假設我們有兩個表,一個是用戶表(users),一個是訂單表(orders)。其中訂單表的用戶id(user_id)列以外鍵方式關聯到用戶表的id列。

CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `orders` (
`id` int NOT NULL AUTO_INCREMENT,
`order_no` varchar(255) NOT NULL,
`user_id` int NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

在添加訂單數據時,我們需要確保用戶表中已經存在與訂單中的用戶id對應的記錄。

INSERT INTO `users` (`name`) VALUES ('張三');
INSERT INTO `orders` (`order_no`, `user_id`) VALUES ('20210101', 1);

如果我們試圖插入一個不存在的用戶id,就會出現外鍵約束錯誤。

INSERT INTO `orders` (`order_no`, `user_id`) VALUES ('20210102', 2);

這時候,mysql就會拋出以下錯誤:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)

因此,我們在插入關聯表數據時,需要先插入主表數據,確保主鍵存在,再插入關聯表數據。