在创建数据的时候可以指定吗? 朋友的一个数据库(MS-SQL)当主键列删除的时候外键也同时删除了。
不知道怎么回事。。
没有触发器
不知道怎么回事。。
没有触发器
解决方案 »
- 如何判断一个日期点,临近的最小日期
- 一个简单的触发器问题
- 请教一个SQL语句,希望大家帮忙!
- 请教!高手!
- [microsoft][odbc sql server driver][sql server]cursorfetch:在INTO列表中声明的变量数目必须与所选择的列数目匹配。[microsoft][odbc
- 请教从文本文件往SQLServer中导入数据的问题
- SQL语句优化-----请大哥大姐们帮忙?
- 更改了windows2000 server的密码后,sql server不能用了
- 关于字段?
- which is the best? (100points)
- 请教关于SQL的难题
- sql转换问题及结构(高手帮忙)在线等!!!
可以查看联机帮助的:FOREIGN KEY 约束
create table /Alter table 时
可以[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
如果没有指定 ON DELETE 或 ON UPDATE,则默认为 NO ACTION。 ON DELETE NO ACTION
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE 语句。ON UPDATE NO ACTION
指定如果试图更新某一行中的键值,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 UPDATE 语句。CASCADE、SET NULL 和 SET DEFAULT 允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。 ON DELETE CASCADE
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。 ON UPDATE CASCADE
指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 注意:
如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。
ON DELETE SET NULL
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。为了执行此约束,目标表的所有外键列必须可为空值。ON UPDATE SET NULL
指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。为了执行此约束,目标表的所有外键列必须可为空值。ON DELETE SET DEFAULT
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。为了执行此约束,目标表的所有外键列必须具有默认定义。如果某个列可为空值,并且未设置显式的默认值,则将使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。ON UPDATE SET DEFAULT
指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。为了执行此约束,目标表的所有外键列必须具有默认定义。如果某个列可为空值,并且未设置显式的默认值,则将使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。以 AdventureWorks 中 Purchasing.ProductVendor 表上的 FK_ProductVendor_Vendor_VendorID 约束为例。此约束在 ProductVendor 表中的 VendorID 列与 Purchasing.Vendor 表中的 VendorID 主键列之间建立了一种外键关系。如果为此约束指定了 ON DELETE CASCADE,则从 Vendor 中删除 VendorID 等于 100 的行也将删除 ProductVendor 中 VendorID 等于 100 的三行。如果为此约束指定了 ON UPDATE CASCADE,那么,在将 Vendor 表中 VendorID 值从 100 更新为 155 时,也将更新 ProductVendor 中 VendorID 值当前等于 100 的三行中的 VendorID 值。不能为带有 INSTEAD OF DELETE 触发器的表指定 ON DELETE CASCADE。对于带有 INSTEAD OF UPDATE 触发器的表,不能指定下列各项:ON DELETE SET NULL、ON DELETE SET DEFAULT、ON UPDATE CASCADE、ON UPDATE SET NULL 以及 ON UDATE SET DEFAULT。参考!