【发布时间】:2013-08-28 09:47:19
【问题描述】:
我有一个保存数据的表,其中一个行需要存在于另一个表中。所以,我想要一个外键来保持引用完整性。
CREATE TABLE table1
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
AnotherID INT NOT NULL,
SomeData VARCHAR(100) NOT NULL
)
CREATE TABLE table2
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
AnotherID INT NOT NULL,
MoreData VARCHAR(30) NOT NULL,
CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID)
)
但是,如您所见,我的外键表中的列不是 PK。有没有办法创建这个外键,或者有更好的方法来维护这个引用完整性?
【问题讨论】:
-
这样做没有多大意义。为什么不参考
table1.ID? -
如果你的 AnothidID 不是主键,它应该是 ForeignKey,所以作为 ForeignKey,你的 table2 应该指向同一个表(可能是 table3)
标签: sql sql-server