用Oracle编写程序:创建触发器MyTrigger,它的作用是当表departments中的记录被删除后,自动删除表employees中的对应的员工记录,从而保证数据的完整性。
时间: 2024-02-25 13:55:53 浏览: 55
好的,以下是可以实现你要求的Oracle触发器代码:
```sql
CREATE OR REPLACE TRIGGER MyTrigger
AFTER DELETE ON departments
FOR EACH ROW
BEGIN
-- 删除表employees中对应的员工记录
DELETE FROM employees WHERE department_id = :OLD.department_id;
END;
```
这个触发器名为`MyTrigger`,它会在`departments`表中的记录被删除后自动触发。对于每一条被删除的记录,它会删除表`employees`中对应部门的所有员工记录。需要注意的是,这个触发器是一个`AFTER DELETE`触发器,它会在记录被删除后执行,因此需要使用`:OLD`关键字来访问被删除记录的数据。
相关问题
oracle触发器案例
以下是一个简单的 Oracle 触发器案例,用于在向员工表插入新行时自动更新部门表中的员工数目:
```sql
CREATE OR REPLACE TRIGGER update_dept_employee_count
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
UPDATE departments
SET employee_count = employee_count + 1
WHERE department_id = :new.department_id;
END;
```
该触发器被命名为 `update_dept_employee_count`,在每次向 `employees` 表插入新行时触发。在触发器内部,我们使用 `UPDATE` 语句更新 `departments` 表中的 `employee_count` 字段。该语句使用 `:new` 来引用将要插入的新行,并根据其部门 ID 更新相应的部门记录。
需要注意的是,这是一个 `AFTER INSERT` 触发器,这意味着触发器代码将在新行插入后执行,而不是在插入之前。此外,这是一个 `FOR EACH ROW` 触发器,这意味着触发器代码将为每个插入的新行执行一次。
阅读全文