ITPub博客

首页 > 数据库 > Oracle > 不让程序对表进行insert操作

不让程序对表进行insert操作

原创 Oracle 作者:rewqrewq 时间:2011-08-09 16:31:51 0 删除 编辑
不让程序对表进行insert操作
今天碰到这么一个问题,应用在向一个表插入数据,每天插入很多数据,但是这个表一点用处都没有,又不能停掉应用,所以就想了个方法阻塞insert操作。
我使用的是oracle的trigger进行操作的,trigger具有一个instead of方法,但这个方法只能对view使用,所以我将原来的表rename,然后建立一个同名的view,再在这个view上建立一个trigger,实现了该操作。
具体方法如下:
实施操作:
alter table FS_PCS_BSSADD rename to FS_PCS_BSSADD_1;
create view FS_PCS_BSSADD as
select MSISDN,
IMSI,
DEVICE_ID,
DEVICE_MODEL_ID,
DEVICE_MODEL,
MANUFACTURER_ID,
MANUFACTURER,
TIMESTAMP,
PAIR_TIME,
SOURCE,
PROVINCE_ID,
HOME_PROVINCE_ID,
BATCH,
COPYCATIMEI
from FS_PCS_BSSADD_1;

create or replace trigger TRI_PCS_BSSADD_1
instead of insert on FS_PCS_BSSADD referencing NEW as newrow for each row
declare
begin
insert into FS_PCS_BSSADD_2
(MSISDN,
IMSI,
DEVICE_ID,
DEVICE_MODEL_ID,
DEVICE_MODEL,
MANUFACTURER_ID,
MANUFACTURER,
TIMESTAMP,
PAIR_TIME,
SOURCE,
PROVINCE_ID,
HOME_PROVINCE_ID,
BATCH,
COPYCATIMEI)
values
(:newrow.MSISDN,
:newrow.IMSI,
:newrow.DEVICE_ID,
:newrow.DEVICE_MODEL_ID,
:newrow.DEVICE_MODEL,
:newrow.MANUFACTURER_ID,
:newrow.MANUFACTURER,
:newrow.TIMESTAMP,
:newrow.PAIR_TIME,
:newrow.SOURCE,
:newrow.PROVINCE_ID,
:newrow.HOME_PROVINCE_ID,
:newrow.BATCH,
:newrow.COPYCATIMEI);
end;

还原操作:
drop trigger TRI_PCS_BSSADD_1;
drop view FS_PCS_BSSADD;
alter table FS_PCS_BSSADD_1 rename to FS_PCS_BSSADD;[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/41451/viewspace-1053649/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: dbms_job的使用
下一篇: oracle的临时表
请登录后发表评论 登录
全部评论
  • 博文量
    83
  • 访问量
    265471