执行Insert PL / SQL时自动插入记录

时间:2018-04-03 21:38:08

标签: oracle oracle11g triggers

我开始搞乱PL / SQL数据库了,我很难创建一个触发器,当我在表中插入一行时,在我的列中放置一个名称为token的值。

我用我所知道的DB编写了一个代码,但是当我运行它时会出现以下错误:

  

(ORA-04084:无法更改此类触发器的新值)

按照代码:

create TABLE table_cad(
codUser integer,
name varchar(200),
pass varchar(50),
login varchar(8),
email varchar(30),
cod number(11)
token number(20));

alter table table_cad add CONSTRAINT codUser_PK PRIMARY key (codUser);

create sequence token_seq
minvalue 1
maxvalue 99999
start with 1
increment by 1;



create or replace trigger token_tgr 
AFTER INSERT ON table_cad

declare
  seq number;
begin
   select token_seq.NEXTVAL
    into sequencial
   from dual;  
  :new.token := seq;
end;

1 个答案:

答案 0 :(得分:1)

您需要BEFORE INSERT行级触发器。

CREATE OR REPLACE TRIGGER token_tgr
  BEFORE INSERT ON table_cad
  FOR EACH ROW
DECLARE
BEGIN
    SELECT token_seq.NEXTVAL
    INTO   :new.token
    FROM   dual;
END; 
/