我必须创建一个触发器,从序列中填充主键字段user_id。
所以我先做了这个:
Create sequence user_seq;
然后我创建了触发器。我还必须创建一个函数来检查架构system_users中的表用户的emp_id中的值是否存在于架构HRM_REPO的表employees中。这部分是在评论中,因为它引起了重大问题。
create or replace trigger user_trig_bi
Before insert on system_users.users
for each row
begin
select user_seq.nextval
into new.user_ID
From dual;
/*where exists (SELECT emp_id
from hrm_repo.employees
where hrm_repo.employees.emp_id = system_users.users.emp_id);*/
END;
我收到必须定义new.user_id的错误。 如果我运行where exists部分,我会收到system_users.users.emp_id是无效标识符的通知。
请帮助我!
此致
文尼
答案 0 :(得分:2)
将new
替换为:new
:
create or replace trigger user_trig_bi
Before insert on system_users.users
for each row
begin
select user_seq.nextval
into :new.user_ID
From dual;
END;
或简单地说:
create or replace trigger user_trig_bi
Before insert on system_users.users
for each row
begin
:new.user_ID := user_seq.nextval;
END;
答案 1 :(得分:1)