create trigger a_tri
before insert on a
for each row
declare
num number;
begin
select count(1) into num from a where userid=:new.userid;
if num>=5 then
delete from a where col_date in (select max(col_date) from a where userid=:new.userid);
end if;
end;
/
before insert on a
for each row
declare
num number;
begin
select count(1) into num from a where userid=:new.userid;
if num>=5 then
delete from a where col_date in (select max(col_date) from a where userid=:new.userid);
end if;
end;
/
解决方案 »
- 新装了个oracle,准备java项目用,可不知道应该授什么权
- oracle tnsnames 文件中,大家帮个忙!!!
- PRO*C为什么我只要加<pthread.h>就报错
- 求oracle 下sql/plus常用命令 sql server 分析器相对应的命令集
- Oracle 9i Database links 10g
- 如何在登录触发器中获得当前会话的id
- 大家帮忙看一下Java oracle 数据库连接问题
- 开始学Oracle,大家推荐几本书吧
- 如何按时间段统计?
- olivertree(自古多情空余恨),beckhambobo(beckham), akinggom(kinggom,onejune4450(中文字符) 进来接分~!
- 谁有oracle函数相关的材料
- 各位大侠帮帮忙吧————快快请大家进来
before insert on a
for each row
declare
num number;
begin
select count(1) into num from a where userid=:new.userid;
if num>=5 then
delete from a where col_date in (select max(col_date) from a where userid=:new.userid);
end if;
end;
/
before insert on a
for each row
declare
num number;
begin
select count(1) into num from a where userid=:new.userid;
if num>=5 then
delete from a where col_date in (select max(col_date) from a where userid=:new.userid);
end if;
end;
/
create view a as select * from a_;
create or replace trigger trg_a
instead of insert on a
for each row
declare
cnt number := 0;
begin
select count(*) into cnt from a_;
if cnt = 5 then
update a_ set dt = :new.dt, n = :new.n
where dt = (select min(dt) from a_);
else
insert into a_ values(:new.dt,:new.n);
end if;
end;
/
insert into a values(sysdate+1,1);
insert into a values(sysdate+2,2);
insert into a values(sysdate+3,3);
insert into a values(sysdate+4,4);
select * from a;
insert into a values(sysdate+5,5);
insert into a values(sysdate+6,6);
select * from a;drop view a;
drop table a_;
这样做有哪些好处呢??
你是说你那样写的话多用户并发的情况下不能正常工作吗?虽然我对oracle并不是特别熟悉,但是我想了解了解!!