首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql内存引擎不检查更新外键?

问MySql内存引擎不检查更新外键?
EN

Stack Overflow用户
提问于 2015-12-15 07:39:28
回答 1查看 728关注 0票数 3

在进行了几次测试之后,我发现内存引擎上的外键缺少一致性检查之一。

为了更好地解释,在InnoDb中有一个类似的例子

代码语言:javascript
复制
CREATE TABLE testInnoDb1 (
    c1 int(11) PRIMARY KEY
) ENGINE=InnoDB;

CREATE TABLE testInnoDb2 (
    c1 int(11) PRIMARY KEY,
    FOREIGN KEY (c1) REFERENCES testInnoDb1(c1) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB;

INSERT INTO testInnoDb1 (c1) VALUES (42);
INSERT INTO testInnoDb2 (c1) VALUES (42);
-- INSERT INTO testInnoDb2 (c1) VALUES (64); -- This will fail
-- UPDATE testInnoDb2 SET c1=128; -- This will fail

记忆也是如此

代码语言:javascript
复制
CREATE TABLE testMem1 (
    c1 int(11) PRIMARY KEY
) ENGINE=MEMORY;

CREATE TABLE testMem2 (
    c1 int(11) PRIMARY KEY,
    FOREIGN KEY (c1) REFERENCES testMem1(c1) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=MEMORY;

INSERT INTO testMem1 (c1) VALUES (42);
INSERT INTO testMem2 (c1) VALUES (42);
-- INSERT INTO test2 (c1) VALUES (64); -- This will fail
UPDATE testMem2 SET c1=128; -- This should fail?

我的问题是:为什么更新一致性不与内存引擎保持一致?那是个错误还是有什么真正的原因?有提到已知的bug吗?

作为附加信息,我正在使用Linux上的存储库版本进行开发,该版本仍然是15.1 (5.1)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-19 01:34:14

MySQL目前不支持外键约束检查:

MySQL 5.6参考手册13.1.17.3使用外键约束 外键和其他MySQL语句重要 对于不支持外键(如MyISAM)的存储引擎,MySQL服务器解析并忽略外键规范。第15章替代储存引擎 表15.1存储引擎特性摘要特性MyISAM内存InnoDB存档NDB外键支持否 15.3内存存储引擎 表15.4内存存储引擎特性外键支持号

来自15.3 re InnoDB (有FKs)的PS与内存(没有):

性能特性 尽管内存表在内存中进行处理,但它们不一定比繁忙服务器上的InnoDB表、通用查询或读写工作负载下的表更快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34283488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档