微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

解决方法

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

>不需要任何主键
>儿童表柱中不需要唯一性

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

answer by Matt删除TableA和TableB,这对初学者来说很困惑,
并重新创建它们

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);

原文地址:https://www.jb51.cc/mssql/79778.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐