2016-08-25 147 views
0

我有这个代码创建一个外键给必须引用表S的表P。目前我想成为fk的列是bigint,不是null,默认值是0.这是障碍吗?并且StoredFile列ID不为空,并填充bigint数据。ALTER TABLE语句与FOREIGN KEY约束冲突sql

alter table P add constraint fk_fileId_p foreign key (fileID) 
    references Ss(id) 
+0

你想创建一个外键的列有一个默认值?听起来就像是你的表设计中的一个缺陷,因为现在你必须在参考表中创建一个带有默认值的虚拟记录,以便让你的外键工作。此外,您在此表格中插入的每条新记录都将与此虚拟记录相关联。那真的是你想要的吗? – GuidoG

+0

是的。如果父表得到更新,我希望能够更新子表。 – Jokes1994

+0

Jokes1994我不明白你的意思。外键不会以任何方式更新子表。你想在这里完成什么? – GuidoG

回答

2

为了添加FK,你必须确保storefileID 0是存在于表StoredFile(例如,通过添加伪记录) - 否则FK验证失败,不能创建约束。

+0

如果我没有默认值,创建列的alter table给我一个错误,它必须有一个默认值 – Jokes1994

+0

这就是为什么您应该添加ID为0的虚拟记录...以后您可以过滤它/更改显示方式等,但是为了使用FK,暂时需要虚拟记录。 – Tyron78

相关问题