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....?
这归结为:

  • 识别执行更新的用户

  • 如果是用户X,则阻止更新

  • 识别用户 根据,您可以使用此代码让用户执行
    更新

    -- ...
    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表中插入行!