首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle 触发器 创办

2012-07-04 
Oracle 触发器 创建在创建Oracle 触发器的时候需要注意一点,需要触发器的末尾添加上“/”(斜杠),Oracle 是认

Oracle 触发器 创建

在创建Oracle 触发器的时候需要注意一点,需要触发器的末尾添加上“/”(斜杠),Oracle 是认"/"为触发器的结束符。

CREATE OR REPLACE TRIGGER "T_C_DATA_TR"BEFORE INSERT ON "T_C_DATA_TEMP"FOR EACH ROWwhen (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),  app        VARCHAR2(64));insert into T_C_DATA (MSISDN, CHANNEL_ID, TIME, UA, PLATFORM, ACT, RESULT, PROVINCE, IMSI, IMEI, APP)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');insert into T_C_DATA (MSISDN, CHANNEL_ID, TIME, UA, PLATFORM, ACT, RESULT, PROVINCE, IMSI, IMEI, APP)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);insert into T_C_DATA (MSISDN, CHANNEL_ID, TIME, UA, PLATFORM, ACT, RESULT, PROVINCE, IMSI, IMEI, APP)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);insert into T_C_DATA (MSISDN, CHANNEL_ID, TIME, UA, PLATFORM, ACT, RESULT, PROVINCE, IMSI, IMEI, APP)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');insert into T_C_DATA (MSISDN, CHANNEL_ID, TIME, UA, PLATFORM, ACT, RESULT, PROVINCE, IMSI, IMEI, APP)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),  app        VARCHAR2(64),   primary key (ID));create sequence T_C_DATA_SQminvalue 1maxvalue 999999999999999999999999999start with 1increment by 1cache 20;CREATE OR REPLACE TRIGGER "T_C_DATA_TR"BEFORE INSERT ON "T_C_DATA_TEMP"FOR EACH ROWwhen (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 ROWwhen (new."ID" IS NULL)BEGIN        SELECT "T_C_DATA_SQ".nextval        INTO :new."ID" FROM dual;END ;INSERT   INTO T_C_DATA (msisdn,channel_id,time,ua,platform,act,result,province,imsi,imei,app)SELECT  bk2.msisdn,bk2.channel_id,bk2.time,bk2.ua,bk2.platform,bk2.act,bk2.result,bk2.province,bk2.imsi,bk2.imei,bk2.appFROM   T_C_DATA_BK2 bk2;commit
?

?

热点排行