MrS*_*iMo 1 sql firebird firebird2.5
我有两张桌子:commerciaux 和 production。我想在生产中创建一个链接到表 commerciaux 的外键。
ALTER TABLE PRODUCTION
ADD CONSTRAINT FK_PRODUCTION_1
FOREIGN KEY (NOM_COMMERCIAL)
REFERENCES COMMERCIAUX(NOM_COMMERCIAL)
ON DELETE CASCADE
ON UPDATE CASCADE
Run Code Online (Sandbox Code Playgroud)
当我提交时,我收到错误:
This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE or PRIMARY KEY constraint in table COMMERCIAUX with specified columns.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
要求写在错误消息中
在具有指定列的表 COMMERCIAUX 中找不到 UNIQUE 或 PRIMARY KEY 约束。
您必须在表上创建这个或那个约束COMMERCIAUX,以便该列COMMERCIAUX(NOM_COMMERCIAL)获得唯一索引。
请参阅第 5.4.1.7.3 章唯一约束
另请阅读另一章:
5.4.1.7.4 外键 外 键确保参与列只能包含主表中引用列中也存在的值。这些引用的列通常称为目标列。它们必须是目标表中的主键或唯一键。它们不需要定义 NOT NULL 约束,但如果它们是主键,它们当然会有该约束。
如果没有唯一索引,Firebird 无法保证“目标列”中的值是唯一的。然后,如果不保证这些值是唯一的,Firebird 就无法实现多对一关系,即外键。