sql server中建立外键约束有3中方式:enterprise manager中,tables,design table,设置table的properties,可以建立constraint, reference keyenterprise manager中,diagrams, new diagrams,建立两个表的关系;直接用transact sql语句。
1、三个方法都需要先建立数据表。
1)创建表author :
create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introduction] [ntext] null
)
2)创建表mybbs:
reate table [dbo].[mybbs] (
[id] [bigint] identity (1, 1) not null ,
[authorid] [bigint] not null ,
[title] [char] (40) null ,
[date_of_created] [datetime] null ,
[abstract] [char] (480) null ,
[content] [ntext] null
)
2、设置表mybbs中的authorid为外键,参照author表的id字段,直接使用transact sql语句,过程如下:
1)增加表mybbs(authorid)的外键约束fk_mybbs_author,表mybbs中的authorid受表author中的主键id约束:
begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade
2)删除外键约束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction
上面on update cascade,on delete cascade两个选项,指明以后author表的id字段有delete,update *** 作时,mybbs表中的id也会被级联删除或更新。如果没有选中,是不可以对author表中已被mybbs表关联的id进行update或者delete *** 作的。
拓展资料:SQL的主键和外键的作用:
1、插入非空值时,如果主键表中没有这个值,则不能插入。
2、更新时,不能改为主键表中没有的值。
3、删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
4、更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外键就是起约束作用。
1、为了方便大家理解,使用一个例子来帮助大家理解。意思大概就是通过引用表二中的字段完成对表一字段的约束。方法:
2、这里一共两个表,先创建外键表,因为先有外键,主键才能引用。首先创建数据库,新建查询。
3、新建外键表【teacher】,输入命令:create table teacher。添加需要的字段teacher_xingming并设置它为【主键】。输入命令:teacher_xingming nchar(10) primary key,
4、选中需要执行的命令行,单击【执行】,下方会有是否成功的提示。现在对表进行刷新 *** 作后,会发现已经成功创建了一个新表【teacher】。
5、接下来就要创建学生表了,create table student(\tstudent_xingming nchar(10) primary key not null,——该程序段意思为创建一个【student】表,表中新建一个主键【student_xingming字段,类型为nchar(10) ,并不允许为空。】
6、继续写,输入:student_banji nchar(10) not null,——表中新建一个【student_banji字段,类型为nchar(10) ,并不允许为空。】
7、创建外键,输入命令student_jiaoshi nchar(10) foreign key references teacher(teacher_xingming)看起来很长,实际意思很简单:表中新建一个【student_jiaoshi字段】,它是外键,nchar(10)类型,它来至 teacher_xingming中的内容。
8、选中,点击【执行】,没有错误,就说明成功了。刷新一下表,看看是不是多了一个表【student】?所有约束已经创建好了。
9、来试一下看看是否真正实现所说的功能。打开【teacher表】,填写“刘老师”。打开【student表】,前面任意填,最后填写“刘老师”,没有错误说明没问题。
10、如何想测试约束是否真的有效,填写其他内容,看看是否成功,只要不是【teacher】字段中的内容,他就会报错。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)