外键不匹配SQLite

时间:2015-04-19 19:33:16

标签: sqlite foreign-keys foreign-key-relationship

我搜索了所有关于此问题的文档,但我似乎无法解释问题所在,也许有经验的人可以帮助我。

所以我创建了一个名为LOCALIZACAO的表:

CREATE TABLE LOCALIZACAO(
id INTEGER PRIMARY KEY AUTOINCREMENT,
rua TEXT NOT NULL,
codigoPostal TEXT NOT NULL,
UNIQUE (codigoPostal));

另一个引用LOCALIZACAO的表,称为SOCIOLOCALIZACAO:

CREATE TABLE SOCIOLOCALIZACAO(
idS INTEGER REFERENCES SOCIO(idS),
idL INTEGER NOT NULL REFERENCES LOCALIZACAO(idL),
CONSTRAINT pk_SOCIOLOCALIZACAO PRIMARY KEY (idS),
CONSTRAINT fk_SOCIOLOCALIZACAO FOREIGN KEY (idL) REFERENCES LOCALIZACAO(id) ON DELETE CASCADE ON UPDATE CASCADE);

当我在SOCIOLOCALIZACAO表上插入时,我在LOCALIZACAO表上插入元素:

INSERT INTO SOCIOLOCALIZACAO VALUES (1,1);

我发错了

foreign key mismatch "SOCIOLOCALIZACAO" referencing "LOCALIZACAO"

我确信在SOCIO和LOCALIZACAO中有元素1

这是SOCIO表:

CREATE TABLE SOCIO(
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
anoDeNascimento INTEGER NOT NULL,
numeroDeSocio INTEGER NOT NULL CHECK (numeroDeSocio > 0),
nif INTEGER NOT NULL CHECK (nif > 99999999 AND nif < 1000000000),
anoDeVinculacao INTEGER NOT NULL CHECK (anoDeNascimento < anoDeVinculacao),
UNIQUE (nome, nif),
UNIQUE (numeroDeSocio));

任何帮助表示赞赏! 谢谢!

1 个答案:

答案 0 :(得分:1)

您的外键引用表idS中的字段idLLOCALIZACAO。没有这样的字段,那里只有id字段。

我猜你只是在插入记录时才看到这个,因为SQLite不是很迂腐。其他数据库不允许您创建这样的外键。