我在MySQL上使用外键时遇到此问题。我是这门语言的新手,我已经阅读了很多官方文档,但没有明确说明。
我也在本网站上查了关于外键的其他问题,但也没有帮助我。我甚至复制了一个正确的代码并用我的案例更改了名称,它一直给我错误。
我正在使用SQL Fiddle检查我的sintaxis。这是代码:
CREATE TABLE Aparato(
Codigo SMALLINT NOT NULL AUTO_INCREMENT,
Descripcion VARCHAR(40) NOT NULL,
TipoNombre VARCHAR(20) NOT NULL,
TipoCaracteristicas VARCHAR(30) NOT NULL,
FOREIGN KEY (TipoNombre) REFERENCES Tipo(Nombre),
FOREIGN KEY (TipoCaracteristicas) REFERENCES Tipo(Caracteristicas),
PRIMARY KEY (Codigo)
);
CREATE TABLE Tipo(
Nombre VARCHAR(20) NOT NULL,
Caracteristicas VARCHAR(30) NOT NULL,
PRIMARY KEY (Nombre)
);
用西班牙语,但我不认为这是相关的。我收到此错误,您可以自己尝试(SQL Fiddle):
Schema Creation Failed: Can't create table 'db_2_b9c14b.aparato' (errno: 150):
即使是我的数据库老师也无法找到问题所在。
答案 0 :(得分:0)
您可以将您的Caracteristic标记为UNIQUE或添加类似主键:
CREATE TABLE Tipo(
Nombre VARCHAR(20) NOT NULL,
Caracteristicas VARCHAR(30) NOT NULL,
PRIMARY KEY (Nombre,Caracteristicas)
);
答案 1 :(得分:0)
FOREIGN KEY (TipoNombre,TipoCaracteristicas) REFERENCES Tipo(Nombre,Caracteristicas)
此外,引用的表必须位于第一位。
CREATE TABLE Tipo(
...
);
CREATE TABLE Aparato(
...
);
感谢大家的快速回答。