我有以下表格:
CREATE TABLE publishers
(
name VARCHAR(50) NOT NULL,
status TINYINT DEFAULT 1 NOT NULL,
CONSTRAINT publishers_pk PRIMARY KEY (name)
);
CREATE TABLE titles
(
id INT NOT NULL AUTO_INCREMENT,
publisher VARCHAR(50),
title VARCHAR(50) NOT NULL,
status ENUM('active', 'announced', 'inactive'),
discount TINYINT NOT NULL,
CONSTRAINT title_pk PRIMARY KEY (id),
CONSTRAINT title_fk FOREIGN KEY (publisher)
REFERENCES publishers (name)
ON DELETE SET NULL
ON UPDATE CASCADE
);
当我更改 publishers 中的“name”时,它并没有更改 titles 表中的“publisher”。为什么行为会这样?
最佳答案
你知道你用的是什么引擎吗?我读到带有默认引擎的 MySQL 将解析外键约束但实际上不会对它们执行任何操作。您可能正在使用 MyISAM 引擎吗?
http://dev.mysql.com/doc/refman/5.5/en/ansi-diff-foreign-keys.html
关于mysql - 更改外键表名称未正确更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16310938/