`
conkeyn
  • 浏览: 1529123 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Oracle 触发器 创建

 
阅读更多

在创建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),
  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_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 ;



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.app
FROM   T_C_DATA_BK2 bk2;

commit
 

 

分享到:
评论

相关推荐

    oracle触发器的创建与使用

    【Oracle触发器的创建与使用】是数据库管理中不可或缺的一部分,尤其在Oracle数据库系统中,触发器扮演着关键角色。触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动...

    调试oracle触发器方法

    调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的错误和逻辑问题。下面我们将详细探讨如何调试Oracle触发器。 1. **PL/SQL Developer工具调试**: - PL/SQL Developer是一款强大...

    oracle 触发器实时调用java 中http接口

    总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...

    关于oracle触发器before和after的应用问题

    ### Oracle触发器Before和After应用详解 #### 引言 Oracle数据库系统中,触发器是一项核心功能,用于响应特定事件的自动执行代码块。本文旨在深入解析Oracle触发器中的Before和After两种触发时机,以及它们在...

    个人亲测oracle触发器调用java程序

    Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到...

    oracle_触发器的种类和触发事件

    "oracle触发器的种类和触发事件" Oracle触发器是一种特殊的存储过程,它可以在数据库中自动执行一些操作,主要用于实现数据的完整性、数据的安全性和业务逻辑的实现。触发器可以分为四种类型:DML触发器、DDL触发器...

    Oracle触发器与存储过程高级编程-第3版itpub.rar

    《Oracle触发器与存储过程高级编程》第3版是一本深入探讨Oracle数据库中触发器和存储过程技术的专业书籍。在Oracle数据库系统中,触发器和存储过程是数据库管理员和开发人员进行复杂业务逻辑处理和数据管理的重要...

    oracle 创建触发器 创建序列.txt

    oracle 创建序列 完整步骤

    Oracle触发器实验报告

    Oracle触发器是数据库管理系统中的一种特殊程序,它与数据库表的操作紧密相关,可以在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行。在本实验报告中,主要涉及了Oracle触发器与参照完整性约束的...

    利用 Oracle 系统触发器防止误删除表操作

    在Oracle 8i环境下,虽然无法直接在系统级别创建`TRUNCATE`触发器,但仍然可以创建`DROP`触发器来保护数据库表。 #### 创建触发器脚本 ```sql CREATE OR REPLACE TRIGGER TRIGGER_UNDROPTABLE BEFORE DROP ON ...

    Oracle触发器 实例讲解

    例如,在员工表中,我们可以创建一个触发器来自动分配员工编号: ```sql create trigger auto_assign_employee_id before insert on employees for each row begin select seq_employee_id.nextval into :new....

    oracle触发器的创建和跨数据库查询.zip

    在这个“oracle触发器的创建和跨数据库查询”的主题中,我们将深入探讨如何创建触发器以及如何利用数据库链接(DB Link)进行跨数据库查询和操作。 首先,让我们了解如何创建Oracle触发器。触发器的创建通常涉及...

    Oracle触发器备份表数据

    在深入探讨如何利用Oracle触发器备份表数据之前,我们首先需要理解几个关键概念:Oracle数据库、触发器以及备份策略。Oracle数据库是全球领先的数据库管理系统之一,以其强大的性能、可靠的安全性和丰富的功能受到...

    oracle触发器功能介绍

    Oracle触发器是数据库对象之一,它在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器主要用于实现复杂的业务规则和数据验证,它们可以扩展SQL的功能,允许在数据修改前后执行一系列的动作。...

    oracle触发器语法要点

    ### Oracle触发器语法要点 #### 一、触发器概述 Oracle触发器是一种存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则、数据完整性检查或者自动生成...

    oracle触发器与存储过程高级编程

    总之,“Oracle触发器与存储过程高级编程”是数据库开发中的重要技能,理解它们的工作原理、如何创建和使用,以及何时应该避免使用,对于提升数据库管理效率和数据安全性至关重要。通过实践和学习,你可以更好地掌握...

    Oracle触发器与存储过程高级编程

    在深入探讨《Oracle触发器与存储过程高级编程》这一主题之前,我们首先应当明确Oracle数据库在企业级应用中的核心地位。Oracle数据库以其强大的数据处理能力、高可用性和安全性,成为众多大型企业和组织首选的数据...

    Oracle触发器里调用Java程序

    接下来,我们可以创建一个Oracle触发器来调用这个Java方法。例如,每当在表`MY_TABLE`上执行INSERT操作时,触发器会调用`MyJavaClass.doSomething`方法处理新插入的数据: ```sql CREATE OR REPLACE TRIGGER my_...

    ORACLE触发器、内置程序包教学.doc )

    以下是一个具体的触发器创建示例: ```sql CREATE OR REPLACE TRIGGER biu_emp_deptno BEFORE INSERT OR UPDATE OF deptNo ON Emp FOR EACH ROW WHEN (New.deptNo <> 40) BEGIN :New.comm := 0; END; / ``` 在这...

    oracle创建触发器实例

    Oracle 创建触发器是一种数据库编程技术,用于在特定的数据库事件发生时自动执行一段代码。在这个实例中,我们看到的是一个防止非本地机器执行DDL(Data Definition Language)操作的触发器,比如`TRUNCATE`、`ALTER...

Global site tag (gtag.js) - Google Analytics