我有一个简单的架构:
CREATE TABLE technologies (
technologyName VARCHAR(50) NOT NULL PRIMARY KEY
);
CREATE TABLE technologySynonyms (
synonymId INT PRIMARY KEY AUTO_INCREMENT,
sourceTechnologyName VARCHAR(50) UNIQUE,
targetTechnologyName VARCHAR(50),
FOREIGN KEY (targetTechnologyName)
REFERENCES technologies(technologyName)
);
我想进一步简化technologySynonyms
表定义,如下所示:
CREATE TABLE technologySynonyms (
synonymId INT PRIMARY KEY AUTO_INCREMENT,
sourceTechnologyName VARCHAR(50) UNIQUE,
targetTechnologyName VARCHAR(50) REFERENCES technologies(technologyName)
);
我没有收到任何错误 - 查询执行正常并且创建了表,但是当我插入一条验证外键约束的记录时:
INSSERT INTO technologySynonyms (sourceTechnologyName, targetTechnologyName)
VALUES ('JS', 'Value not present in technologies table!!');
记录已插入。
这给我留下了几个问题:
- 我的 SQL 有什么问题吗?这应该行不通吗?
- 我可以让 MySQL Workbench 变得更严格吗?如果查询立即被拒绝,我会更愿意。
最佳答案
关于mysql - 内联描述时外键约束无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047826/