Oracle触发器实例代码

Oracle触发器实例代码:创建表employees,定义触发器emp_salary_check,在插入或更新时检查薪资是否合法。

Oracle触发器实例代码

在Oracle数据库中,触发器(Trigger)是一类特殊的存储过程,它会在特定的数据库操作发生时自动执行,触发器可以用来实现数据完整性约束、审计日志记录、同步复制等功能,本文将通过一个实例来介绍如何创建和使用Oracle触发器。

Oracle触发器实例代码

创建触发器

我们创建一个名为employees的表,用于存储员工信息:

CREATE TABLE employees (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(50),
  salary NUMBER,
  department_id NUMBER
);

接下来,我们创建一个名为departments的表,用于存储部门信息:

CREATE TABLE departments (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(50)
);

现在,我们创建一个触发器,当向employees表中插入新记录时,自动检查department_id字段是否在departments表中存在,如果不存在,则抛出异常并阻止插入操作。

CREATE OR REPLACE TRIGGER check_department_id
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
  IF :new.department_id NOT IN (SELECT id FROM departments) THEN
    RAISE_APPLICATION_ERROR(-20001, 'Invalid department_id');
  END IF;
END;
/

使用触发器

现在,我们尝试向employees表中插入一条记录:

INSERT INTO employees (id, name, salary, department_id)
VALUES (1, '张三', 5000, 1);

由于department_id为1的部门不存在于departments表中,所以触发器会抛出异常并阻止插入操作,我们可以通过查询employees表来验证这一点:

SELECT * FROM employees;

接下来,我们向departments表中插入一条记录:

INSERT INTO departments (id, name)
VALUES (1, '人事部');

现在,我们再次尝试向employees表中插入记录:

Oracle触发器实例代码

INSERT INTO employees (id, name, salary, department_id)
VALUES (1, '张三', 5000, 1);

这次插入操作会成功,因为department_id为1的部门已经存在于departments表中,我们可以再次查询employees表来验证这一点:

SELECT * FROM employees;

相关问题与解答

1、什么是Oracle触发器?

答:Oracle触发器是一类特殊的存储过程,它会在特定的数据库操作发生时自动执行,触发器可以用来实现数据完整性约束、审计日志记录、同步复制等功能。

2、触发器的执行时机有哪些?

答:触发器的执行时机分为三类:BEFORE(之前)、AFTER(之后)和INSTEAD OF(替代),BEFORE触发器在指定操作发生之前执行;AFTER触发器在指定操作发生之后执行;INSTEAD OF触发器用于视图上,替代原始操作执行。

3、触发器的执行频率有哪些?

Oracle触发器实例代码

答:触发器的执行频率分为两类:FOR EACH ROW(行级)和FOR EACH STATEMENT(语句级),FOR EACH ROW触发器针对每个受影响的行执行一次;FOR EACH STATEMENT触发器针对整个SQL语句执行一次。

4、如何删除触发器?

答:可以使用以下语句删除触发器:

DROP TRIGGER trigger_name;

trigger_name是要删除的触发器的名称。

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/315026.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-03-07 15:49
下一篇 2024-03-07 15:50

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入