"只有User1可以做到这一点"限制与触发器

时间:2016-12-20 20:56:42

标签: oracle triggers

我想在触发器上实现一个条件,基本上说:'只有用户:Boss可以做到这一点'

我到处搜索,但我找不到任何东西......

在我的触发器中,只有老板可以将薪水提高20%

这就是我已经做过的事情:

CREATE OR REPLACE TRIGGER BOSSPERMISSION
       BEFORE UPDATE
       ON teachers
       FOR EACH ROW

DECLARE
    error EXCEPTION;

BEGIN

    IF (((:NEW.SALARY-:OLD.SALARY)/:OLD.SALARY)*100) > 20 THEN
       -- Here i want to include another if condition which says what I asked

       END IF;

EXCEPTION
    WHEN error THEN
    RAISE_APPLICATION_ERROR(-20002,'You're not the boss');

END;
/

我在Oracle SQL上工作。

解决

以下回复,请确保删除旧触发器。

1 个答案:

答案 0 :(得分:2)

在触发器体中:

        var classId = DataClassInfoProvider.GetDataClassInfo("My.Product").ClassID;
        var productClasses = DataClassInfoProvider.GetClasses()
                                                  .WhereEquals("ClassInheritsFromClassID", classId)
                                                  .ToList();

        var products = DocumentHelper.GetDocuments()
                                       .OnSite("MyWebSite")
                                       .Types(productClasses.Select(x => x.ClassName).ToArray())
                                       .WithCoupledColumns()
                                       .ToList()
                                       .Select(x =>
                                       {
                                           var product = new Product();
                                           product.Initialize(x, tree);
                                           return product;
                                       })
                                       .ToList();

更新:

if USER<>'BOSS' then
  RAISE;
end if;

OUTPUT(为我工作):

create or replace trigger BOSSPERMISSION before update on teachers
for each row
begin
  if user<>'BOSS' then
    raise_application_error(-20001,'Only Bawse can do it');
  end if;
end;