ORACLE怎么删除主表的行时,把相关的表的行一起删除
时间: 2024-01-21 20:18:59 浏览: 22
在 Oracle 中,可以使用外键约束来实现级联删除。具体做法是在定义表之间的外键时,指定 ON DELETE CASCADE 属性。这样,在删除主表中的行时,相关的从表中的行也会被自动删除。
下面是一个例子,假设有两个表,一个是主表 parent,另一个是从表 child。parent 表中有一个主键 parent_id,child 表中有一个外键 parent_id,指向 parent 表的 parent_id 列。
创建表的 SQL 语句如下:
```sql
CREATE TABLE parent (
parent_id NUMBER PRIMARY KEY,
parent_name VARCHAR2(50)
);
CREATE TABLE child (
child_id NUMBER PRIMARY KEY,
child_name VARCHAR2(50),
parent_id NUMBER,
CONSTRAINT fk_child_parent FOREIGN KEY (parent_id) REFERENCES parent(parent_id) ON DELETE CASCADE
);
```
在创建 child 表的时候,指定了外键约束 fk_child_parent,并且 ON DELETE CASCADE 属性,表示在删除 parent 表中的行时,自动删除 child 表中对应的行。
例如,删除 parent 表中 parent_id 为 1 的行时,对应的 child 表中的行也会被删除:
```sql
DELETE FROM parent WHERE parent_id = 1;
```
需要注意的是,级联删除可能会引起数据丢失或者不一致的问题,因此在使用时需要谨慎考虑。