`
dicye
  • 浏览: 38790 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类

SQL外键约束

阅读更多
SQL外键约束:NO ACTION,CASCADE,SET NULL,SET DEFAULT
NO ACTION
指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。
CASCADE、SET NULL 和 SET DEFAULT
允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。
ON DELETE CASCADE
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。
ON UPDATE CASCADE
指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 (如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON DELETE SET NULL
指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON UPDATE SET DEFAULT
指 定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。
ON UPDATE SET DEFAULT
指 定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。

ORACLE官方解释:

ON DELETE
The ON DELETE clause indicates that when a DELETE is executed on a referenced row in the referenced table, one of the following actions will be executed upon the constrained column, as specified by action:

NO ACTION(default)
The NO ACTION clause produces an error if the reference is violated. This is the default if action is not specified.

CASCADE
The CASCADE keyword removes all rows which reference the deleted row. Exercise caution with this action.

SET NULL
The SET NULL clause assigns a NULL value to all referenced column values.

引用:
http://zhouyuepeng.blog.163.com/blog/static/6951594220081016112739123/
http://dracull.blog.163.com/blog/static/1300284542009101904145619/?fromdm&fromSearch&isFromSearchEngine=yes
分享到:
评论

相关推荐

    sql外键约束

    在SQL(结构化查询语言)中,外键约束是一种重要的关系数据库完整性机制,它用于确保数据的一致性和准确性。外键约束是两个表之间的一种关联,一个表中的外键引用了另一个表的主键,从而建立了两个表之间的联系。...

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

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

    禁用启用所有外键约束.tst

    在MySQL中,可以使用以下SQL语句临时禁用外键约束: ```sql SET FOREIGN_KEY_CHECKS = 0; ``` 这行命令会关闭对当前会话中外键检查的支持,允许插入可能违反外键约束的数据。 2. **启用外键约束**: 当完成...

    T_SQL建库建表加约束(主键,外键,检查,唯一等约束,插入数据)

    这里`FK_Employees_Departments`是外键约束的名称,`DepartmentID`字段作为外键引用`Departments`表的`DepartmentID`。 5. **检查约束**: 检查约束允许我们对输入的数据设置条件。例如,如果我们要确保`Position...

    MySQL删除表的时候忽略外键约束的简单实现

    在MySQL数据库管理中,删除表是一项需要谨慎操作的任务,尤其是当表之间存在外键约束时。外键约束是关系数据库中确保数据完整性和一致性的重要机制,它不允许在父表(引用其他表的字段的表)中删除那些已被子表引用...

    Oracle定义约束 外键约束

    ### Oracle定义约束:外键约束详解 #### 一、引言 在数据库设计与管理过程中,维护数据的一致性和完整性是非常重要的。Oracle数据库系统提供了一系列的机制来帮助开发者和管理员达到这一目标,其中最重要的机制之一...

    自动删除所有表,有外键约束的表优先删除

    标题"自动删除所有表,有外键约束的表优先删除"涉及到的是一个数据库操作的场景,通常需要谨慎处理,因为错误的操作可能导致数据丢失或破坏数据库结构。在这个问题中,我们关注的是如何在有外键约束的环境中安全地...

    sql外键的建立文档

    当在主表中插入、更新或删除记录时,外键约束会检查从表中的对应记录,确保操作的合法性。 创建外键的方法有两种: 1. 创建表时定义外键: 假设我们有两张表A和B,A表为主表,B表为从表,A的主键是`a_num`,B的...

    用触发器实现SQLite的外键约束

    ### 使用触发器实现SQLite的外键约束 #### 背景与问题介绍 在进行数码相框嵌入式开发的过程中,开发团队选择了SQLite作为数据库管理系统。然而,在编码过程中遇到了一个较为棘手的问题:SQLite默认情况下不支持...

    检查约束外键约束.sql

    检查约束外键约束.sql

    数据库技术与应用 外键约束-A学习任务书.doc

    2. 掌握如何在SQL Server Management Studio (SSMS) 中创建和管理外键约束。 3. 学会如何通过外键约束实现不同表之间的关联,以保证数据的一致性。 4. 学习如何处理外键约束引发的级联操作,如级联删除和级联更新。 ...

    MySQL的约束-外键约束

    本文将深入探讨其中的一种约束类型——外键约束(Foreign Key Constraint),它是关系数据库模型中的核心概念,用于建立和维护不同表之间的关联。 外键约束允许一个表中的数据引用另一个表中的数据,这种引用关系...

    6.3 外键约束.sql

    6.3 外键约束.sql

    sql学习 哪些主外键约束失效了.sql

    sql学习 哪些主外键约束失效了.sql

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

    在MySQL数据库中,外键约束是关系型数据库中用于维护数据完整性和一致性的重要工具。它确保了一张表中的数据与另一张表的数据之间的关联性,通常用于实现一对一、一对多或多对多的关系。本篇文章将详细讲解如何进行...

    数据一致性守护者:MySQL外键约束深度解析

    ### 数据一致性守护者:MySQL 外键约束深度解析 #### 引言 在现代软件开发中,特别是Web应用程序领域,数据库扮演着极其重要的角色。其中MySQL作为一种流行的关系型数据库管理系统(RDBMS),因其开放源代码特性、...

    4-外键约束.sql

    4-外键约束.sql

    一个比较不错SQL测试的程序

    7、动态创建SQL外键约束。 8、动态创建SQL触发器。 9、自定义SQL数据库登录校验窗体。 10、不用设置BDE的SQL数据库连接。 11、动态窗体创建。 12、MDI编程。 13、利用Field的OnSetText事件检查输入值是否存在...

Global site tag (gtag.js) - Google Analytics