创建语句级触发器,需要对scott用户的emp表上进行增删改操作的进行安全检查,如果不是sys、system、scott用户,不能够做数据增、删、改的操作,星期六和星期日也不能做数据增、删、改的操作
时间: 2024-03-15 08:45:47 浏览: 86
可以通过在触发器中使用系统函数 USER 和 SYSDATE 来获取当前操作的用户和当前日期,然后判断是否为 sys、system、scott 用户和是否是星期六或星期日。如果不是,则可以抛出异常来阻止操作。以下是一个示例代码:
```
CREATE OR REPLACE TRIGGER emp_trigger
BEFORE INSERT OR UPDATE OR DELETE ON scott.emp
FOR EACH ROW
DECLARE
current_user VARCHAR2(30);
current_day VARCHAR2(20);
BEGIN
SELECT USER INTO current_user FROM dual;
SELECT TO_CHAR(SYSDATE, 'Day') INTO current_day FROM dual;
IF current_user NOT IN ('SYS', 'SYSTEM', 'SCOTT') OR current_day IN ('Saturday', 'Sunday') THEN
RAISE_APPLICATION_ERROR(-20001, '只有 SYS、SYSTEM、SCOTT 用户可以在工作日进行数据操作!');
END IF;
END;
```
这个触发器会在对 scott.emp 表进行插入、更新或删除操作的时候触发。它会获取当前操作的用户和当前日期,然后判断是否为 sys、system、scott 用户和是否是工作日,如果不是,则会抛出一个自定义的异常,阻止操作。