Oracle 觸發器 建立

2021-09-01 03:13:07 字數 2822 閱讀 6904

在建立oracle 觸發器的時候需要注意一點,需要觸發器的末尾新增上「/」(斜槓),oracle 是認"/"為觸發器的結束符。

create or replace trigger "t_c_data_tr"

before insert on "t_c_data_temp"

for each row

when (new."id" is null)

begin

select "t_c_data_sq".nextval

into :new."id" from dual;

end/

示例:

create table t_c_data

( msisdn varchar2(32),

channel_id varchar2(16),

time date,

ua varchar2(64),

platform varchar2(20),

act varchar2(2),

result varchar2(8),

province varchar2(4),

imsi varchar2(32),

imei varchar2(32),

);values ('13606029971', null, to_date('24-05-2011 17:00:35', 'dd-mm-yyyy hh24:mi:ss'), 'nokiae52-1', '0', '2', '0', '0', '460006006399161', '359327034255640', 'fjdm1.0.0.001.005_cts60v31_jt');

values ('13606029971', null, to_date('24-05-2011 17:00:44', 'dd-mm-yyyy hh24:mi:ss'), 'nokiae52-1', '0', '3', '0', '0', '460006006399161', '359327034255640', null);

values ('13466573225', null, to_date('24-05-2011 17:00:52', 'dd-mm-yyyy hh24:mi:ss'), 'zte-me/mobile', '99', '1', '1', '0', '460020666231846', '351510043766602', null);

values ('15160074046', null, to_date('24-05-2011 17:04:11', 'dd-mm-yyyy hh24:mi:ss'), 'nokian95', '0', '2', '0', '0', '460021600084350', '355501017319672', 'fjdm1.0.0.001.005_cts60v31_jt');

values ('15160074046', null, to_date('24-05-2011 17:07:18', 'dd-mm-yyyy hh24:mi:ss'), 'nokian95', '0', '3', '0', '0', '460021600084350', '355501017319672', null);

create table t_c_data_temp

( id number(11),

msisdn varchar2(32),

channel_id varchar2(16),

time date,

ua varchar2(64),

platform varchar2(20),

act varchar2(2),

result varchar2(8),

province varchar2(4),

imsi varchar2(32),

imei varchar2(32),

primary key (id)

);create sequence t_c_data_sq

minvalue 1

maxvalue 999999999999999999999999999

start with 1

increment by 1

cache 20;

create or replace trigger "t_c_data_tr"

before insert on "t_c_data_temp"

for each row

when (new."id" is null)

begin

select "t_c_data_sq".nextval

into :new."id" from dual;

end;

/ ---如果把這個斜槓去掉,在建立或修改觸發器的時,會認為後面的sql命令還是屬於當前這個觸器。

rename t_c_data to t_c_data_bk2 ;

rename t_c_data_temp to t_c_data ;

create or replace trigger "t_c_data_tr"

before insert on "t_c_data"

for each row

when (new."id" is null)

begin

select "t_c_data_sq".nextval

into :new."id" from dual;

end ;

from t_c_data_bk2 bk2;

commit

Oracle建立觸發器

首先要講一下觸發器的概念 觸發器是由於dml語句的執行引發的一種特殊的資料庫物件。所以呢他的型別就要insert,instead of update,delete 三種觸發器。基本用法如下面所示 建立刪除觸發器 create or replace trigger tri delete after d...

oracle建立觸發器

工作需要,需要建立乙個觸發器,判斷表中的id是否為空,如果為空的時候需要用觸發器加上id,如果沒有觸發觸發器加上id,如果有則不觸發觸發器。建立乙個序列,每次加乙個 create sequence 序列名稱 increment by 1 每次加乙個 建立乙個觸發器 create or replace...

建立oracle觸發器

create trigger 觸發器名稱 before after 執行前觸發還是執行後觸發 insert update delete on 表名 for each row begin 觸發的sql語句 如果只有一條sql語句,可省略begin,end end 觸發器中可能會用到兩種值,一種是修改之...