ORACLE触发器问题
来源:百度知道 编辑:UC知道 时间:2024/09/23 17:21:53
create table mytb(id int primary key,name varchar2(10));
create sequence seq_id;
create or replace trigger tri_ins_mytb
before insert on mytb
for each row
declare
v_num number;
begin
select seq_id.nextval into v_num from dual;
:new.id:=v_num;
end;
当我向表里插入数据的时候提示触发器未通过验证,请问这是什么回事?
create sequence seq_id;
create or replace trigger tri_ins_mytb
before insert on mytb
for each row
declare
v_num number;
begin
select seq_id.nextval into v_num from dual;
:new.id:=v_num;
end;
当我向表里插入数据的时候提示触发器未通过验证,请问这是什么回事?
这里没有问题,不知道你是怎么做的。我怀疑表中已有数据,序列生成的数值跟已有主键重复。
SQL> create table mytb(id int primary key,name varchar2(10));
表已创建。
SQL>
SQL>
SQL> create sequence seq_id;
序列已创建。
SQL>
SQL> create or replace trigger tri_ins_mytb
2 before insert on mytb
3 for each row
4 declare
5 v_num number;
6 begin
7 select seq_id.nextval into v_num from dual;
8 :new.id:=v_num;
9 end;
10 /
触发器已创建
SQL> insert into mytb (name) values('Alfred');
已创建 1 行。
SQL> insert into mytb (id,name) values(2,'Linda');
已创建 1 行。
SQL> select *from mytb;
ID NAME
---------- --------------------
1 Alfred
2 Linda
SQL> insert into mytb (id,name) values(2,'Linda');
已创建 1 行。
SQL> select *from mytb;