- 论坛徽章:
- 0
|
设想如下,有表A,目的是用触发器限定A表的记录条数,当A表插入条数大过1000条,自动删除最前面的记录,使A表一直保持1000条,请问有没有好的办法可以实现?
附上我当初写的Trigger代码:
---------------------------------------------------------------------------
create or replace trigger TG_A
after INSERT OR UPDATE OR DELETE
OF "USER_NAME","LOG_TIME"
on A FOR EACH ROW
declare
-- local variables here
ROW_COUNT NUMBER:=0;
I NUMBER:=0;
MAX_COUNT NUMBER:=1000;
cursor CUR_A is select USER_NAME,LOG_TIME,IP,ROWID from A;
begin
SELECT COUNT(*) INTO ROW_COUNT FROM A;
IF ROW_COUNT >; MAX_COUNT THEN
FOR C_A IN CUR_A LOOP
I:=I+1;
IF I>;ROW_COUNT-MAX_COUNT THEN
DELETE FROM A WHERE ROWID=C_A.ROWID;
COMMIT;
END IF;
END LOOP;
END IF;
end TG_A;
----------------------------------------------------------------------------
运行报ORA-04091错误。 |
|