Oracle中on delete set not null怎么用 请举例
时间: 2024-10-21 20:13:45 浏览: 10
Oracle性能分析——使用set_autotrace_on和set_timing_on来分析select语句的性能.doc
在Oracle数据库中,`ON DELETE SET NOT NULL` 是一种外键约束条件,它用于设定当主表(通常是父表)中的记录被删除时,如果外键字段对应的值在从表中设置了默认值为 `NULL`,那么会将该外键字段设置为非空 (`NOT NULL`),防止因为引用完整性丢失而无法删除主表中的记录。
举个例子,假设我们有两个表:`Employees`(员工表)和 `Departments`(部门表),它们之间有一个外键关联。`Employees` 表有个 `DepartmentId` 字段,它是对 `Departments` 表的外键引用。如果我们希望在删除一个部门时,不允许有员工关联到已删除的部门,可以这样做:
```sql
ALTER TABLE Employees
ADD CONSTRAINT FK_Employees_Departments
FOREIGN KEY (DepartmentId)
REFERENCES Departments (DepartmentId)
ON DELETE SET NOT NULL;
```
这意味着如果试图删除一个部门(`Departments.DepartmentId` 等于某个值),只有当所有关联的员工已被移除或者他们的 `DepartmentId` 被更新为其他有效值,这个删除操作才会成功。否则,系统会抛出错误,阻止删除操作。
阅读全文