Plsql 创建一个触发器,以限制任何用户在周末访问表EMP进行修改
我有一个表Plsql 创建一个触发器,以限制任何用户在周末访问表EMP进行修改,plsql,triggers,Plsql,Triggers,我有一个表emp,并触发一个触发器,它将阻止某些特定用户在周末访问。如何获取当前用户 我无法按如下方式完成触发器主体: BEGIN IF TO_CHAR(SYSDATE,'DAY')='SUNDAY' THEN....? 这归结为: 识别执行更新的用户 如果是用户X,则阻止更新 识别用户 根据,您可以使用此代码让用户执行更新: -- ... DECLARE v_username varchar2(10); BEGIN -- Find username of person per
emp
,并触发一个触发器,它将阻止某些特定用户在周末访问。如何获取当前用户
我无法按如下方式完成触发器主体:
BEGIN
IF TO_CHAR(SYSDATE,'DAY')='SUNDAY' THEN....?
这归结为:
更新
:
-- ...
DECLARE
v_username varchar2(10);
BEGIN
-- Find username of person performing UPDATE on the table
SELECT user INTO v_username
FROM dual;
-- ...
以下是他们的完整示例:
CREATE OR REPLACE TRIGGER orders_before_update
BEFORE UPDATE
ON orders
FOR EACH ROW
DECLARE
v_username varchar2(10);
BEGIN
-- Find username of person performing UPDATE on the table
SELECT user INTO v_username
FROM dual;
-- Update updated_date field to current system date
:new.updated_date := sysdate;
-- Update updated_by field to the username of the person performing the UPDATE
:new.updated_by := v_username;
END;
阻止更新
根据,触发器可以调用以阻止更新。似乎您在创建异常时给出了错误代码,而在执行代码时却得到了此错误
错误报告-
SQL错误:ORA-21000:引发应用程序错误的错误号参数\u 20100超出范围
ORA-06512:在“HR.TRR”第1行
ORA-04088:执行触发器“HR.TRR”时出错
2100000000-“引发%s%s的应用程序错误的错误号参数超出范围”
*原因:
*措施:使用范围在-20000到-20999(包括-20000到-20999)之间的错误号。
使用用户定义的异常时,错误代码范围应介于两者之间
-20000至20999。似乎你错过了“-”号@varshaDas:这只是一个示例触发器。我指出了上面的相关部分。在emp上插入后,为每行创建或替换触发器trr开始,如果to_char(sysdate,'day')='monday',然后引发应用程序错误(20100,'you cannot access');如果结束;终止我已经写了这段代码,但没有得到适当的ouputtrigger正在创建,但我仍然能够在emp表中插入行!