约束外键引用
A. Sql server 外键引用问题
上述关系B称为外键关系表,也就是说B表是C表和A表的关联表,你要向C 表中插入数据回当然关系到A表啦。按道答理你在插入C表的同时,应该有一个和B表相关联的的外键,也就是说你给C表插数据的同时,同时给B表插入了一个与C表相关联的外键,根据B表这个外键,你又可以得到与A表相关联的外键。只需插入A表相对应的外键即可。
B. 什么是外键约束
外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列。
外键约束对子表如此检查处理:
在子表上进行INSERT、UPDATE操作的限制是,要和主表中的主键值匹配,或为NULL,否则不允许。
外键约束对父表如此检查处理:
在父表_上进行UPDATE、DELETE操作的限制,取决于在定义子表的外键时指定的ONUPDATE、ONDELETE子句(不同的DBMS支持的情况不尽相同)。众ONDELETE子句各选项的作用:
1、NoACTION:删除主表记录,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。此为默认操作(不指定ONDELETE子句,系统自动采取的操作)。
2、CASCADE(级联):删除主表记录,也将删除子表中的匹配记录。
3、SETNULL:删除主表记录,将子表中的匹配记录的外键值改为NULL。
4、SETDEFAULT:删除主表记录,将子表中的匹配记录的外键值改为默认值。众ONUPDATE子句各选项的作用。
(2)约束外键引用扩展阅读
外键的用途是确保数据的完整性。它通常包括以下几种:
1、实体完整性,确保每个实体是唯一的(通过主键来实施)
2、域完整性,确保属性值只从一套特定可选的集合里选择
3、关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值。
约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了。
则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。
FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。
如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。
若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
C. sql中怎样创建外键约束
添加外键 ,alter table B
语法:alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名)
如:
altertableStu_PkFk_Sc
addconstraintFk_s
foreignkey(sno)
referencesStu_PkFk_S(sno)
--cc是外键约束名,不能重复,也不能是int类型(如1,2,3)
add constraint cc
--B表里的需要约束的字段(id)
foreign key (id)
--A表后的(id)可省略
references A (id)
(3)约束外键引用扩展阅读:
数据查询语言,其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
参考资料:结构化查询语言_网络
D. SQL语句的外键约束
create table score
(课程号 int primary key ,
score int)
create table student
(学号 int primary key,
课程号 int,
foreign key (课程号) references score( 课程号))
--------------------------
公共关键字是 课程号
score 表中 的主键 课程号 是 student表中的非主键,所以score表中的课程号是表student的外键。
--- 如果公共关键字在一个关系中是主键,那么这个公共关键字被称为另一个关系的外键
E. 在SQL中如何创建外键约束
可以用创建关系图的方式进行约束,步骤如下
企业管理器中打开数据库,新建关系图,选出自己所要的几张表,然后将对应的外键用鼠标连接到另一张表的主键上就行了
ps 环境 sql2000
F. SQL FOREIGN KEY 约束引用
下面是帮助文档中的内容 { CHECK | NOCHECK} CONSTRAINT 指定启用或禁用constraint_name。如果禁用,将来插入或更新该列时将不用该约束条件进行验证。此选项只能与 FOREIGN KEY 和 CHECK 约束一起使用。 ALL指定使用 NOCHECK 选项禁用所有约束,或者使用 CHECK 选项启用所有约束。 SQLServer临时禁用和启用所有外键约束 --获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' from sysobjects a ,sysobjects b where a.xtype ='f' and a.parent_obj = b.id --获得启用所有外键约束的语句
G. sql约束与外键
插入外键表外键列中的数据必须在主键表主键列里必须存在,否则会以上错误。lz注意下。
H. SQL菜鸟问题!“有外键约束引用的表”是什么意思啊
被外键引用的表
I. 外键约束是怎么使用的
create table t1(A1 int primary key)create table t2(B1 int,B2 int)--对t2表的B2创建外键(关联字段t1表的A1字段)alter table t2 add constraint FK_B2_t1A1 foreign key(B2) references t1(A1)--注意:能作为一个表的外键关联字段(t1.A1)这个字段必须是主键或有唯一约束的(t1的A1必须是主键或者unique)