我的目的是不在表里加primary key或是 unique的限制,用trigger来实现..
A,B 这一对值是唯一的...但是为什么我的trigger不成功的?create table R (
A integer,
B integer,
C varchar(20)
);@triggersinsert into R values (12,4,'x');
insert into R values (13,4,'y');
insert into R values (13,5,'z');
insert into R values (14,4,'y');
insert into R values (12,4,'z');
update R set A=12 where C='y';//-----------------------
[code]
triggers.sqlcreate or replace trigger PK_CONSTR before insert or update on R
for each row
declare
cursor r1 is
select * from R;
cursor r2 is
select * from R; exec1 exception;
begin
for rec1 in r1 loop
for rec2 in r2 loop
if rec1.A = rec2.A then
if rec1.B = rec2.B then
raise exec1;
end if;
end if;
end loop;
end loop;exception
when exec1 then
dbms_output.put_line('Duplicate violation');
end;
/
[/code]
A,B 这一对值是唯一的...但是为什么我的trigger不成功的?create table R (
A integer,
B integer,
C varchar(20)
);@triggersinsert into R values (12,4,'x');
insert into R values (13,4,'y');
insert into R values (13,5,'z');
insert into R values (14,4,'y');
insert into R values (12,4,'z');
update R set A=12 where C='y';//-----------------------
[code]
triggers.sqlcreate or replace trigger PK_CONSTR before insert or update on R
for each row
declare
cursor r1 is
select * from R;
cursor r2 is
select * from R; exec1 exception;
begin
for rec1 in r1 loop
for rec2 in r2 loop
if rec1.A = rec2.A then
if rec1.B = rec2.B then
raise exec1;
end if;
end if;
end loop;
end loop;exception
when exec1 then
dbms_output.put_line('Duplicate violation');
end;
/
[/code]
解决方案 »
- 编译和执行存储过程 间歇性报错 ORA-00600 内部错误代码 参数 [kcbnew_3] [18]
- visual studio 2005连接ORACLE数据库,失败,而同样的代码使用VC6,就可以.怎么处理呀.
- 一个oracle错误。
- oracle导数据到sql(clob到text)出现重复的记录
- 怎样用一条sql语句实现下列操作
- 一个多表统计多次GROUP BY 的问题
- 急:怎样修改某一列的NULL约束(用SQL语句)?
- 那位有oracle项目可做,无偿劳动,新手只为学习!
- 一个SQL语句的奇怪现象请大家解释
- !!!!好令我迷惑的问题呀!!!!!!!
- 简单的查询问题!!!!!!!
- 有关于存储过程?在线!
for each row
declare
cursor r1 is
select * from R;
cursor r2 is
select * from R; exec1 exception;
begin
for rec1 in r1 loop
for rec2 in r2 loop
if rec1.A = rec2.A then
if rec1.B = rec2.B then
raise exec1;
end if;
end if;
end loop;
end loop;exception
when exec1 then
dbms_output.put_line('Duplicate violation');
end;
/