详解如何定义SQL Server外关键字约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解如何定义SQL Server外关键字约束相关的知识,希望对你有一定的参考价值。

参考技术A SQL
Server外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义SQL
Server主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为TEXT
或IMAGE
数据类型的列创建外关键字。外关键字最多由16
个列组成。
定义外关键字约束的语法如下:
以下是代码片段:
CONSTRAINT
constraint_name
FOREIGN
KEY
(column_name1[,
column_name2,…,column_name16])
REFERENCES
ref_table
[
(ref_column1[,ref_column2,…,
ref_column16]
)]
[
ON
DELETE

CASCADE
|
NO
ACTION

]
[
ON
UPDATE

CASCADE
|
NO
ACTION

]
]
[
NOT
FOR
REPLICATION
]
各参数说明如下:
REFERENCES
指定要建立关联的表的信息。
ref_table
指定要建立关联的表的名称。
ref_column
指定要建立关联的表中的相关列的名称。
以下是代码片段:
ON
DELETE
CASCADE
|
NO
ACTION
指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在删除父表数据行时会将子表中对应的数据行删除;如果指定的是NO
ACTION,则SQL
Server
会产生一个错误,并将父表中的删除操作回滚。NO
ACTION
是缺省值。
以下是代码片段:
ON
UPDATE
CASCADE
|
NO
ACTION
指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值CASCADE,则在更新父表数据行时会将子表中对应的数据行更新;如果指定的是NO
ACTION,则SQL
Server
会产生一个错误,并将父表中的更新操作回滚。NO
ACTION
是缺省值。
以下是代码片段:
NOT
FOR
REPLICATION
指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用。
希望可以帮到你,谢谢!

以上是关于详解如何定义SQL Server外关键字约束的主要内容,如果未能解决你的问题,请参考以下文章

sql中外键怎么写?

在SQL中如何创建外键约束?

小议Oracle外键约束修改行为(一)

数据库外键约束?

Oracle如何创建一个置空的外键约束?

sql。两个间的外键约束和插入数据问题