SQLServer中的外键

1、sql server中创建外键约束有3中方式sql


1.Enterprise Manager中,Tables,Design Table,设置Table的properties,
能够创建constraint, reference key;
数据库


2.Enterprise Manager中,Diagrams, new Diagrams,创建两个表的关系。
 
ide

3.直接用transact sql语句。spa



2、子表,父表的定义
orm

拥有外键的表是子表。主键被其它表引用的表是父表。由于父表的标识被不少个子表中的记录引用,因此叫父表。拥有外键关系,而且能够随便删除数据,不影响其它表的数据的那个表叫子表。server



3、使用的时候谁作为谁的外键,主要从如下两点考虑
it


一、删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
二、记录必须先存在的是父表;
table



4、外键约束的用途:
class


一、建立中检查现存数据

建立关系时将关系应用于外键表中的现有数据。若是选定该对话框,一个错误信息将会通知您有违反约束的数据。
test



二、对 INSERT 和 UPDATE 强制关系

若是选择该选项,则只要使用这些语句在外键表中添加或更新数据时都将强制约束。



三、对复制强制关系

若是选择该选项,则不管什么时候将外键表复制到一个不一样的数据库,都将强制关系的引用完整性。
 

四、级联更新相关的字段

不管什么时候更新主键值,都指示数据库将新的键值传播到相应的外键字段。



五、级联删除相关的字段

不管什么时候删除主表中的行,都指示数据库从外键表中删除相应的行。

 


5、一个SQL建立外键的例子

 

 
SQL 代码   复制
 /*建库,名为student_info*/ create database student_info /*使用student_info*/ use student_info go /*建student表,其中s_id为主键*/ create table student ( s_id int identity(1,1) primary key, s_name varchar(20) not null, s_age int ) go /*建test表,其中test_no为主键*/ create table test ( test_no int identity(1,1) primary key, test_name varchar(30), nax_marks int not null default(0), min_marks int not null default(0) ) go /*建marks表,其中s_id和test_no为外建,分别映射student表中的s_id和test表中的test_no*/ create table marks ( s_id int not null, test_no int not null, marks int not null default(0), primary key(s_id,test_no), foreign key(s_id) references student(s_id), foreign key(test_no) references test(test_no) ) go