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的主键和外键就是起约束作用。
为数据库表添加外键方法(以SqlSever2005数据库为例):
1、新建两张表,一张为主表,一张为副表。主表里的外键就是连接到副表的主键。
2、首先在主表中添加一个外键字段,如下:
3、在主表上右击,选择关系,如下:
4、点击“添加”。
5、再点击上图中标出的位置,如下:
6、图中标出的“主键表”就选择上面的副表。如下:
7、主键表底下的就选择副表的主键,如下:
8、外键表底下的就选择刚才新建的外键字段。如下:
9、再点击“确定”。
10、点击“是”,即可完成外键的添加。
sql中外键怎么写的方法。
如下参考:
1.创建测试表;创建表test_class(class_idvarchar2(10),class_namevarchar2(30));创建表test_student(student_idvarchar2(10),student_namevarchar2(30),class_idvarchar2(10));
2.表test_class创建主键,test_student添加外键;
创建/重新创建eprimaryuniqueandforeignkeyconstraints
altertableTEST_CLASS
Addconstraintp_class_idprimarykey(CLASS_ID);
创建/重新创建eprimaryuniqueandforeignkeyconstraints
altertableTEST_STUDENT
Addconstraintf_class_idforeignkey(CLASS_ID)
Referencestest_class(CLASS_ID)ondeletecascade;
3.主键在表7a686964616fe58685e5aeb931333433623133中,插入数据;
Insertintotest_classvalues(1001,'class1');
Insertintotest_classvalues(1002,'class2');
Insertintotest_classvalues(1003,'class3');
提交;
4.在外键表中插入数据,但class_id没有在主键表中定义,可以查找错误信息;
InsertintoTEST_STUDENTvalues(100001,'kingtwo',1004);
5.如果将数据插入外键表,并且在主键表中定义了class_id,则可以正常插入;
InsertintoTEST_STUDENTvalues(100001,'kingtwo',1001);
InsertintoTEST_STUDENTvalues(100002,'kingtwo',1002);
InsertintoTEST_STUDENTvalues(100003,'twoKings',1003);
提交;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)