【问题标题】:How to add unique constraint as foreign key ?如何添加唯一约束作为外键?
【发布时间】:2016-07-18 13:20:46
【问题描述】:

我正在尝试通过此语句将唯一约束添加为外键:

ALTER TABLE SOME_TABLE ADD(
CONSTRAINT FK_ID FOREIGN KEY (S_ID) REFERENCES OTHER_TABLE(O_ID) UNIQUE (S_ID)
);

我认为这个说法是正确的,但我一直得到"missing right parenthesis error"。可能我的关键词顺序错误。 你能给我建议如何创建一个独特的约束吗?

我红了这个问题:

Add a unique constraint of a sql table as foreign key reference to an another sql table

但我仍然有这个问题。

【问题讨论】:

  • unique (..) 部分无效。引用的表需要有这样的约束,创建FK时不能指定(也不需要整个constraint ..部分的括号)
  • 您是否试图要求 S_ID 在表 SOME_TABLE 中是唯一的?您不必这样做,如果需要,这通常是数据库设计不佳的标志。 O_ID 在 OTHER_TABLE 中必须是唯一的,但外键几乎从不唯一(在它是外键的表中,而不是在它是主键的“父”表中)。

标签: sql oracle


【解决方案1】:

首先,您不需要括号。其次,这是两个约束,您不妨同时给出两个名称:

ALTER TABLE SOME_TABLE
    ADD CONSTRAINT FK_ID FOREIGN KEY (S_ID) REFERENCES OTHER_TABLE(O_ID);

ALTER TABLE SOME_TABLE
    ADD CONSTRAINT UNQ_ST_S_ID UNIQUE (S_ID);

【讨论】:

  • 所以我必须有两个不同的约束,我理解正确吗?
  • 是的,你的条件对应两个约束。
猜你喜欢
  • 2013-12-21
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2021-04-01
相关资源
最近更新 更多