`
Sunshyfangtian
  • 浏览: 229277 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

SQL 添加外键约束

阅读更多
语法如下:
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model 
FOREIGN KEY (cpumodel) 
REFERENCES parts(model);

 

ON DELETE {CASCADE | NO ACTION}

指定当表中被更改的行具有引用关系,并且该行所引用的行从父表中删除时,要对被更改行采取的操作。默认设置为 NO ACTION。

如果指定 CASCADE,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行删除操作。

如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。

例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。

如果对 Customers 表的某行执行 DELETE 语句,并且为 Orders.CustomerID 指定 ON DELETE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同删除。

反之,如果指定 NO ACTION,若在 Orders 表中至少有一行引用 Customers 表中要删除的行,则 SQL Server 将产生一个错误并回滚 Customers 表中的删除操作。

ON UPDATE {CASCADE | NO ACTION}

指定当表中被更改的行具有引用关系,并且该行所引用的行在父表中更新时,要对被更改行采取的操作。默认设置为 NO ACTION。

如果指定 CASCADE,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定 NO ACTION,SQL Server 将产生一个错误并回滚父表中的行更新操作。

如果表中已存在 ON DELETE 的 INSTEAD OF 触发器,那么就不能定义 ON DELETE 的CASCADE 操作。

例如,在 Northwind 数据库中,Orders 表和 Customers 表之间有引用关系。Orders.CustomerID 外键引用 Customers.CustomerID 主键。

如果对 Customers 表的某行执行 UPDATE 语句,并且为 Orders.CustomerID 指定 ON UPDATE CASCADE 操作,则 SQL Server 将在 Orders 表中检查是否有与被更新行相关的一行或多行。如果存在相关行,那么 Orders 表中的相关行将随 Customers 表中的被引用行一同更新。

反之,如果指定了 NO ACTION,若在 Orders 表中至少存在一行引用 Customers 表中要更新的行,那么 SQL Server 将引发一个错误并回滚 Customers 表中的更新操作。

 

分享到:
评论

相关推荐

    数据库下所有表的外键约束查询

    用于查询某个数据库下所有表的外键约束情况,以便统一分析外键约束是否合理;主要查询出外键的,是否级联删除,级联更新,强制外键约束,强制复制约束始终状态。如想使用别的状态,请自行添加。下载的童鞋别下载错了...

    mysql处理添加外键时提示error 150 问题的解决方法

    很多朋友们在做表设计时,处理添加外键时提示error 150 问题,都会遇到此文档中详细的记载了解决方案,希望可以帮到你!

    SqlServer2005自学视频.zip

    21 复习上机课知识 再次演示如何添加外键约束 22 通过sql命令建表 和 主外键约束 23 详细阐述主键约束 外键约束的 作用 24 什么是check约束 及其 作用 25 命令记不住怎么办 26 什么是 default约束.....

    MYSQL 数据库给表加外键约束条件 (史上最详细教程)

    (还未加外键约束) 1. mysql> show columns from message;//信息表 +-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------...

    SQL语句删除和添加外键、主键的方法

    alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter table Stu_PkFk_SC drop constraint FK_c –添加外键 语法:alter table 表名 add constraint 外键约束名 ...

    MySQL外键约束常见操作方法示例【查看、添加、修改、删除】

    本文实例讲述了MySQL外键约束常见操作方法。分享给大家供大家参考,具体如下: 1. 查看数据库表创建的sql语句 show create table vip 2. 查看外键的约束名 CREATE TABLE `vip` ( `id` int(11) NOT NULL AUTO_...

    SQL脚本生成器

    3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则...

    sql-test-data-generator:快速创建您SQL测试数据

    在外键约束的情况下添加相关表的行 对插入语句进行排序以适应外键约束 根据主键值对插入语句进行排序 如何使用图书馆 使用Maven,您必须添加以下依赖项: < groupId>org.quickperf < artifactId>sql-test-data-...

    MySQL约束(主键,唯一,非空,外键)

    4. 外键约束:foreign key 目录MySQL约束(主键,唯一,非空,外键)1. 非空约束2. 唯一约束3. 主键约束4. 外键约束例子 1. 非空约束 非空约束是为了让数据在存入数据时,保证值不为null。 关键字:not null 1. 创建...

    【原创精华】sql server 约束详解

    3.外键约束foreign key references 表名(列名) OwnerUserId int not null foreign key references Users(UserId) 外键后面添加on delete[updte] cascade,则为级联删除或修改,删除主表记录,从表中相应...

    数据库SQL语句讲解.pptx

    空值(NULL)约束 主键(PRIMARY KEY)约束 外键(FOREIGN KEY)约束 默认值(DEFAULT)约束 唯一性(UNIQUE)约束和检查(CHECK)约束。 可以对已创建的表进行哪些修改? 添加、修改列和删除列。 数据库SQL语句...

    T-SQL电子书包含PPT及学习笔记、课后作业 非常好的sql学习资料

    foreign key(stuNo) references stuInfo(stuNo) --添加主外键约束(主键为stuMarks表的stuNo键,外键为stuInfo表的stuNo键) alter table stuMarks add constraint CK_writtenExam check(writtenExam between 0 and...

    21天学会SQL

    5.2.4 利用T-SQL增加外键约束 93 5.2.5 利用SSMS工具创建CHECK 约束 94 5.2.6 利用T-SQL增加CHECK约束 95 5.2.7 利用SSMS工具删除约束 96 5.3 事务的使用 96 5.3.1 什么是事务 96 5.3.2 事务的特性 97 5.3.3 事务的...

    《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·004【标识列、外键、复制表】

    文章目录一、标识列二、外键约束1、外键约束创建要求2、级联操作三、复制表 一、标识列 介绍 标识列,又称为自增列,可以不手动插入数值,系统提供默认的序列值。 特点 标识列必须和一个key搭配(key:主键、唯一键...

    MySQL中常用的SQL语句(总结)

    文章目录 1.数据库的相关操作 1.1 连接数据库  ...2.8 添加外键约束 2.9 添加常用约束 3.数据库和表的基本操作 3.1 修改表名 3.2 修改字段名和字段的数据类型 3.3 添加和删除字段 3.4 修改字段的排列位置 3.5 删除

    Mysql数据库课程设计作业-宠物预定

    使用alter table语句,为这些表定义合理的键和外键约束,并限制CostPerDay的值介于5和20之间。不要添加任何新列。 2。为表预订创建SQL定义,其中每一行记录在固定时间段内为某个宠物所做的预订。定义合理的键和外键...

    SQL Server 2008编程入门经典(第3版)

    6.3.2 外键约束 6.3.3 唯一约束 6.4 CHECK约束 6.5 DEFAuLT约束 6.5.1 在cREATETABLE语句中定义DEFAULT约束 6.5.2 在已存在的表中添加DEFAUIT约束 6.6 禁用约束 6.6.1 在创建约束时忽略无效的数据 6.6.2 临时禁用已...

    《Oracle Database 11g & MySQL 5.6开发手册

    5.4 外键约束108 5.4.1 Oracle数据库的 外键约束 110 5.4.2 MySQL数据库的 外键约束 111 5.5 CHECK约束112 5.5.1 Oracle数据库的 CHECK约束113 5.5.2 MySQL数据库的 CHECK约束113 5.6 触发器约束114 5.7 小结115 5.8...

    MySQL约束(三).pdf

    级联规则:讨论外键约束中的ON DELETE和ON UPDATE行为。 默认值:使用DEFAULT关键字为列设置默认值。 表约束与列约束:比较表级约束和列级约束的区别和使用场景。 约束的创建与管理:如何添加、修改和删除约束。 ...

Global site tag (gtag.js) - Google Analytics