R.V*_*.V. 5 mysql foreign-keys foreign-key-relationship
我有两个表,如下所示:
CREATE TABLE customer
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(25),
PRIMARY KEY(id)
);
CREATE TABLE `client`
(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(200),
`customer_id` INT NOT NULL,
PRIMARY KEY(`id`),
INDEX(`customer_id`),
FOREIGN KEY (`customer_id`) REFERENCES `customer`(`id`) ON UPDATE CASCADE ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)
然后我运行以下命令:
INSERT INTO customer (name) VALUES ('Customer1');
Run Code Online (Sandbox Code Playgroud)
现在表customer包含名称:Customer1,id:1
然后我运行了这个:
INSERT INTO client (name, customer_id) VALUES ('Client of Customer1',34);
Run Code Online (Sandbox Code Playgroud)
它本来应该失败,但是成功插入了。这是为什么?
这是在Linux Mint上的MySQL 5.1上。
做一个show create table customer
. 它将显示转储语句末尾使用的引擎create table
。如果它们显示为 MyISAM,则该引擎不支持外键。FK 定义会被解析,但会被忽略。
要强制表成为 Inno DB(它支持 foren 键),您必须执行以下操作
CREATE TABLE ( ... blah blah blah ...) TYPE=InnoDB;
^^^^^^^^^^^--force InnoDB type
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3114 次 |
最近记录: |