`
Sunshyfangtian
  • 浏览: 243481 次
  • 性别: 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 表中的更新操作。

 

分享到:
评论

相关推荐

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

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

    Oracle定义约束 外键约束

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

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

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

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

    添加外键约束时,你需要在`ALTER TABLE`语句中指定从表、外键名称、外键字段以及引用的主表和主键字段。假设我们要在`tfeedbackmessage`表中添加一个外键,引用`TOperationUser`表的`FID`字段,可以使用以下语句: ...

    SQL语句约束 添加约束

    在SQL Server中,可以使用ALTER TABLE语句来添加外键约束。例如: ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo) 这条语句将stuNo字段设置为外键约束,以建立...

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

    了解如何在对象资源管理器中操作表结构,并添加外键约束。 3. 参照完整性:外键约束确保了参照完整性的原则,即子表中的外键值必须是父表中存在的主键值,或者为空(如果允许的话)。 4. 级联操作:设置外键约束时,...

    MySQL的约束-外键约束

    例如,如果我们想在`Employees`表上添加一个外键约束,可以使用以下命令: ```sql ALTER TABLE Employees ADD CONSTRAINT FK_Employees_Departments FOREIGN KEY (DepartmentID) REFERENCES Departments...

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

    1. **添加外键约束**:如果在创建表时未定义外键约束,可以通过`ALTER TABLE`语句添加外键约束。 ```sql ALTER TABLE Departments ADD CONSTRAINT fk_employee FOREIGN KEY (EmployeeID) REFERENCES Employees...

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

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

    sql外键的建立文档

    以下是如何为B表的`a_num`字段添加外键约束: ```sql alter table B add constraint fk_b foreign key (a_num) references A (a_num); ``` 或者,如果你不想自定义约束名称,可以简化为: ```sql alter ...

    MLDN魔乐科技JAVA培训_Oracle课堂18_外键约束.rar

    在SQL语句中,可以使用ALTER TABLE命令来添加外键约束。基本语法如下: ```sql ALTER TABLE child_table ADD CONSTRAINT fk_constraint_name FOREIGN KEY (child_column1, child_column2, ...) REFERENCES parent_...

    经典SQL语句大全_主外键_约束

    2. **外键约束(Foreign Key Constraint)**:用于建立两个表之间的关系,确保引用完整性。外键是指向另一个表的主键,确保插入的数据在参照表中有对应的记录。例如: ```sql CREATE TABLE Courses ( CourseID ...

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

    MySQL 处理添加外键时提示 Error 150 问题的解决方法 MySQL 中添加外键时,可能会遇到 Error 150 的问题,这个问题是 MySQL 本身的 bug,已经被报告到 MySQL 开发者列表中很多年了。然而,导致这个错误的原因却并...

    在Oracle数据库中添加外键约束的方法详解

    首先,添加外键约束可以通过数据库管理工具的图形用户界面完成。在这些工具中,通常有一个专门的“外键”选项卡,允许用户创建、编辑或删除外键。创建外键时,需要指定外键的名称、参照的模式(即数据库)、参照的表...

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

    具体到这个例子,添加外键约束的SQL语句是: ```sql ALTER TABLE message ADD FOREIGN KEY (m_c_id) REFERENCES course(c_id); ``` 这条命令成功执行后,`message`表的`m_c_id`字段就会被设置为外键,关联到`...

    django在开发中取消外键约束的实现

    在Django中,外键约束(Foreign Key Constraints)用于建立两个模型之间的关系,通常用于表示一对多或一对一的关联。然而,在某些开发场景下,可能需要取消外键约束,这可能是出于性能优化、数据迁移或其他设计考虑...

    Mysql增加外键的方法

    在使用ALTER TABLE语句时,如果需要删除已经存在的外键,不能直接使用DROP FOREIGN KEY,而要先通过SHOW CREATE TABLE查看外键的确切名称,然后使用ALTER TABLE语句配合DROP FOREIGN KEY命令来删除指定的外键约束。...

    详解MySQL中的外键约束问题

    MySQL中的外键约束是数据库设计中用于维护数据完整性和参照完整性的关键机制,特别是在关系数据库中。外键约束确保了在一个表中的数据(子表)与另一个表(父表)中的数据之间的关联性。在MySQL中,外键约束主要用于...

    mysql添加外键的四种方式

    外键约束允许一个表中的字段引用另一个表中的主键,这样就形成了表与表之间的联系。以下将详细介绍四种在MySQL中添加外键的方法。 1. **建表时直接使用 FOREIGN KEY** 当创建新表时,可以直接在CREATE TABLE语句中...

Global site tag (gtag.js) - Google Analytics