我有两张表,比如表A和表B.
我希望在A和B之间存在1- *关系,因此对于每个A,有一个特定的B,可能还有多个其他B。
所以我有这样的表:
Table A
AKey INT IDENTITY PRIMARY KEY,
PrerequisiteKey INT FOREIGN KEY REFERENCES B(BKey)
Table B
BKey INT IDENTITY PRIMARY KEY,
RelationalAKey INT FOREIGN KEY REFERENCES A(AKey)
我希望每个A总是有1个B。我应该尝试这样做(上图)还是我应该以编程方式确定B中第一个带有A键=的条目是“先决条件”B?< / p>
我希望能够将PrerequisiteKey存储为单独的字段,但SQL不允许我以这种方式定义表,因为在创建约束之前两个表都需要存在。
编辑:或者,在表创建答案后添加第一个约束?
答案 0 :(得分:5)
在这些情况下,您通常会创建表,然后添加约束。使用ALTER TABLE语法在创建后更改FK。
ALTER TABLE A
ADD CONSTRAINT aref FOREIGN KEY PrerequisiteKey REFERENCES B(BKey);
答案 1 :(得分:1)
您可以创建2个表,然后使用ALTER TABLE和ADD CONSTRAINT来创建约束。
实施例。 :
ALTER TABLE ..
{
ADD CONSTRAINT ...
}
答案 2 :(得分:0)
通常当我想强制执行1-1关系时,我决定首先输入哪个表,然后使用该表的id作为另一个表的PK(强制执行uniquesness)。然后当然创建Pk / FK关系。如果由于某种原因我不能将它作为PK,我将FK字段inteh表放入并创建一个唯一索引。您不应该尝试在两个表上都有FK(如果SQl Server仍允许它,我会感到惊讶)或者您不能插入任何一个表。