gpt4 book ai didi

sql-server - 添加一个sql表的唯一约束作为另一个sql表的外键引用

转载 作者:行者123 更新时间:2023-12-03 02:05:56 28 4
gpt4 key购买 nike

如何在 sql server 2005 中添加一个 sql 表的唯一约束作为对另一个 sql 表的外键引用

最佳答案

为了添加 FK 约束(在子表到父表中),您必须向关系的父表列添加唯一约束。
其余的都是可选的或者与 FK 无关:

  • 不需要任何主键
  • 子表列不需要唯一性

父表(在这种FK关系中)经常被称为(包括SSMS)为主键表,但PK不是必须的,父表中的唯一键/约束就足够了(因为PK是唯一的,这是特殊情况父表中的唯一约束)。

answer by Matt 中删除表 A 和表 B ,这让初学者感到困惑,
并将它们重新创建为

CREATE TABLE parentB--TableB 
(
PK1 INT NOT NULL,
PK2 INT NOT NULL,
--I would not have additional non-referenced data in parent table,
--rather in child table
--SomeData VARCHAR(1000),

--CONSTRAINT PK_TableB PRIMARY KEY CLUSTERED (PK1, PK2)
)

CREATE TABLE childA--TableA
(
--PK INT, -- NOT NULL,
FK1 INT-- NOT NULL, -- Or NULL, if you''d rather.
FK2 INT --NOT NULL --,
, SomeData VARCHAR(1000)
--CONSTRAINT PK_TableA PRIMARY KEY CLUSTERED (PK),
--CONSTRAINT FK_TableA_FK1FK2 FOREIGN KEY (FK1, FK2) REFERENCES TableB (PK1, PK2),
--CONSTRAINT Cons2cols UNIQUE(FK1, FK2)
)

现在,按顺序添加 FK

ALTER TABLE childA 
ADD
--constraint FK1_childA
--this is optional, if one needs to add his own custom name
FOREIGN KEY (FK1) REFERENCES parentB(PK1);

您应该首先在父表列中相应的引用列上创建唯一约束:

ALTER TABLE parentB ADD 
--CONSTRAINT YourUniqueName --uncomment for adding your own name to constraint
UNIQUE(PK1)
<小时/>

类似地对于 2 列外键约束
(首先,您需要在父表中相应的唯一约束):

ALTER TABLE parentB ADD 
--CONSTRAINT YourUniqueName --for adding your own name to unique constraint
UNIQUE(PK1,PK2)

ALTER TABLE childA
ADD
--constraint yourUniqueName --uncomment for adding your own name to FK constraint
FOREIGN KEY (FK1, FK2) REFERENCES parentB(PK1, PK2);

关于sql-server - 添加一个sql表的唯一约束作为另一个sql表的外键引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com