现在情况是这样的:一个数据库有多个用户
在用户A下创建了表TABLE,然后创建了表的同义词TABLE,并授权给另一个用户。A用户下还创建了一个sequence。用户B下创建了触发器TRIGGER,该触发器用到了A用户下的sequence。然后在B用户下插入数据时报trigger is invalid 的错误。A用户只有创建表和sequence的权限,用户B只有创建触发器的权限。
-- Create sequence
create sequence PROGRESS_ID_SEQUENCE
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;
create or replace trigger lckz_progress_id_trigger
before insert on issscandata.LCKZ_PROGRESS /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
for each row /*对每一行都检测是否触发*/
begin /*触发器开始*/
select issscandata.progress_id_sequence.nextval into :new.progress_id from dual; /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
end;
sequence和触发器如上,还有触发器创建成功,但是编译错误,不知道是哪里引起的。求解,,谢谢
在用户A下创建了表TABLE,然后创建了表的同义词TABLE,并授权给另一个用户。A用户下还创建了一个sequence。用户B下创建了触发器TRIGGER,该触发器用到了A用户下的sequence。然后在B用户下插入数据时报trigger is invalid 的错误。A用户只有创建表和sequence的权限,用户B只有创建触发器的权限。
-- Create sequence
create sequence PROGRESS_ID_SEQUENCE
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;
create or replace trigger lckz_progress_id_trigger
before insert on issscandata.LCKZ_PROGRESS /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
for each row /*对每一行都检测是否触发*/
begin /*触发器开始*/
select issscandata.progress_id_sequence.nextval into :new.progress_id from dual; /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
end;
sequence和触发器如上,还有触发器创建成功,但是编译错误,不知道是哪里引起的。求解,,谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货