我无法添加引用约束条件,两个表都有两列ID和版本作为主键。我将只检查行是否存在的完整性,而不检查版本。
CREATE TABLE TABLEE
(ID INTEGER NOT NULL,
VERSION INTEGER NOT NULL,
PRIMARY KEY (ID , VERSION);
CREATE TABLE CHAIR
(ID INTEGER NOT NULL,
VERSION INTEGER NOT NULL,
ID_TABLEE INTEGER,
PRIMARY KEY (ID , VERSION);
ALTER Chair
ADD constraint MYC FOREIGN KEY (ID)
REFERENCES TABLEE (ID)
ON DELETE RESTRICT
出现此错误
[Code: -573, SQL State: 42890] A column list specified in the references clause of constraint "MYC " does not identify a unique constraint of the parent table or nickname "TABLEE".. SQLCODE=-573, SQLSTATE=42890, DRIVER=4.28.11
这里的问题是Tablee的主键由id和version两列组成,但是完整性检查应该只针对引用的id,而不是version。
1条答案
按热度按时间mwg9r5ms1#
要在表上建立外键,被引用列需要:
1.作为另一个表的主键。
1.......或者至少“扮演”一个角色。
由于被引用表上已经有了主键,因此可以使用第二种方法,在
ID
上添加UNIQUE
和NOT NULL
约束。例如:
请参阅db<>fiddle上的运行示例。
注意:如果您希望
ID
在整个表中具有重复的值,则ID
不是键,并且不能作为键引用。