mysql - 更改外键表名称未正确更新数据

标签 mysql sql database

我有以下表格:

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/

相关文章:

mysql - MySQL服务器如何检索数据并将数据发送给客户端?

mysql - 无法从我的虚拟机访问 MySQL

java - Stackoverflow 和 Hibernate 使用 sql IN (id, id, id, id..id)

mysql - 搜索查询加入 3 个表,1 个表有日期

php - 在类之间共享数据库连接的最佳方式

MySql 不同结果的一组不同结果

php - 内爆数组并将动态数据插入mysql数据库

运行脚本时MySQL出错 "Cannot add Foreign Key Constraint"

mysql - SQL查询我不明白

c# - 使用 Entity Framework 等 ORM 更新数据库中保存的数据的方法是什么?