永发信息网

表已创建好了,想添加外键约束,代码怎么写

答案:4  悬赏:50  手机版
解决时间 2021-04-04 13:02
表已创建好了,想添加外键约束,代码怎么写
最佳答案
alter table 表 add  constraint 外键约束名称 foreign key (列)  references 表 (主键列);

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
设F是基本关系R的一个或一组属性,但不是关系的键,Ks是基本关系S的主键。如果F与Ks相对应,则称F是R的外键,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。
换而言之,如果关系模式R中的某属性集不是R的主键,而是另一个关系R1的主键则该属性集是关系模式R的外键,通常在数据库设计中缩写为FK。
在实际操作中,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。[1] 
显然目标关系的主码和参照关系的外码必须定义在一个或同一组的域上。关系R和S不一定是不同的关系,即外键不一定要与相应的主键同名。如在学生(学号,姓名,性别,专业号,年龄,班长)关系中,“学号”是主键,“班长”属性表示该学生所在班级的班长的学号,它引用了本关系中“学号”属性,因此“班长”是外键,这里学生关系既是参照关系也是被参照关系。不过在实际应用中为了便于识别,当主键与相应的外键属于不同关系时,往往取相同的名字。
全部回答
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCommDevice]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblCommDevice]
GO
CREATE TABLE [dbo].[tblCommDevice]
(
CommDevID int identity(1,1) not null,
PersonID int not null,
CommType varchar(20) null,
CommValue varchar(60) not null,
CONSTRAINT pk_tblCommDevice PRIMARY KEY CLUSTERED (PetitionID) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE INDEX [ix_tblCommDevice] ON [dbo].[tblCommDevice]([CommType]) WITH FILLFACTOR = 60 ON [PRIMARY]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblPerson]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tblPerson]
GO
CREATE TABLE [dbo].[tblPerson]
(
PersonID int identity(1,1) not null,
LastName varchar(20) not null,
FirstName varchar(20) not null,
MailingAddr varchar(40) null,
City varchar(20) null,
State varchar(2) null,
Zip varchar(10) null,
PersonType varchar(1) null,
CONSTRAINT pk_tblPerson PRIMARY KEY CLUSTERED (PersonID) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE INDEX [ix_tblPerson] ON [dbo].[tblPerson]([FirstName]) WITH FILLFACTOR = 60 ON [PRIMARY]
GO
CREATE INDEX [ix_tblPerson_1] ON [dbo].[tblPerson]([LastName], [FirstName]) WITH FILLFACTOR = 60 ON [PRIMARY]
GO
alter table tb_name add constraint fk_name foreing key (tb_name.id) references tb_stu(id);
该语句是在 tb_name表上添加一个外键约束,引用 tb_stu的主键,fk_name是约束的名字。
删除约束:alter table tb_name drop constraint fk_name ;
alter table 表 add constraint 外键约束名称 foreign key (列) references 表 (主键列);追问就是这样写的,可是运行有错误了:
“在被引用表 'orders' 中没有与外键 'fk_id' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。”是什么原因呢追答表orders中没有主键,现在表orders中创建主键,在创建外键。追问在主表创建了主键,子表也创建了,使用SSMS方法创建的追答例子;
-- 创建[Customers]
CREATE TABLE [Customers] (
[CustomerID] [nchar] (5) NOT NULL ,
[CompanyName] [nvarchar] (40) NOT NULL ,
[ContactName] [nvarchar] (30) ,
[ContactTitle] [nvarchar] (30) ,
[Address] [nvarchar] (60),
[City] [nvarchar] (15),
[Region] [nvarchar] (15),
[PostalCode] [nvarchar] (10),
[Country] [nvarchar] (15) ,
[Phone] [nvarchar] (24) ,
[Fax] [nvarchar] (24)
)
GO
-- 增加主键
ALTER TABLE [Customers] ADD CONSTRAINT [PK_Customers] PRIMARY KEY([CustomerID])
GO
-- 创建[Orders]
CREATE TABLE [Orders] (
[OrderID] [int] IDENTITY (1, 1) NOT NULL ,
[CustomerID] [nchar] (5) ,
[EmployeeID] [int] ,
[OrderDate] [datetime] ,
[RequiredDate] [datetime] ,
[ShippedDate] [datetime] ,
[ShipVia] [int] ,
[Freight] [money] ,
[ShipName] [nvarchar] (40) ,
[ShipAddress] [nvarchar] (60) ,
[ShipCity] [nvarchar] (15) ,
[ShipRegion] [nvarchar] (15) ,
[ShipPostalCode] [nvarchar] (10) ,
[ShipCountry] [nvarchar] (15)
)
GO
-- 增加主键
ALTER TABLE [Orders] ADD CONSTRAINT [PK_Orders] PRIMARY KEY ([OrderID])
GO
-- 增加外键
ALTER TABLE [Orders] ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY ([CustomerID])
REFERENCES [Customers] ([CustomerID])
GO
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
文言文的“不会”怎么表示
如何把香油生意做大做强
第二节:短文写作(共25分)有的学校在向学生发
煮饭锅可以用来煮针头吗
女装毛呢外套,想去天猫买件毛呢大衣,或者羊
一块梯形麦田,上底是76米,下底是120米,高5
顺兴五金交电地址有知道的么?有点事想过去
介绍乌市小绿谷的作文
黑莓在青岛实体店哪买比较好
汽车撞报废了车损险会全额赔付吗没有登记证书
仓管员工作表现评语,求护士长写给实习生的出
哪首歌的歌词里有:爱是你给的温柔,我是爱你的
交通事故受伤需进行伤残鉴定,从事故发生之日
如何将REDIS和MYSQL有效结合使用,框架是spri
单选题下列对于国际贸易兴起的叙述,正确的是
推荐资讯
刚才看到个问题:为什么女人有体香,而男人
求推荐MacBook (13-inch, Mid 2009)能用的固
斯柯达suv柯珞克和科迪亚克哪个好
国庆旅游跟团早定好还是晚定好
如图表示生物圈中碳循环的部分过程,有关分析
我特别喜欢看刘海戏金蟾,看完了之后找不到更
犊牛四肢无力排便有意味
为什么不开心每天都不能笑一笑让自己更快
外曾祖父母是什么意思,张岱祖父传记就是今年
拐一半剩一半的谜语是什么
男70年属狗女83年属猪请问各位高手2013年几月
中国历史上,有过真正讨论过客观世界是否存在
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?