不让程序对表进行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/
,如需转载,请注明出处,否则将追究法律责任。