当用到自增序列,需要用到触发器的时候,当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误。

---.应用信息
drop table app_info cascade constraints;
create table APP_INFO
(
id NUMBER() not null,
appid VARCHAR2() default NULL,
appkey VARCHAR2() default NULL,
md5_key VARCHAR2() default NULL,
aes_key VARCHAR2() default NULL,
permission VARCHAR2() default NULL,
email VARCHAR2() default NULL,
password VARCHAR2() default NULL,
ras_public_key VARCHAR2() default NULL,
constraint APP_INFO primary key (id)
); drop sequence app_info_id;
create sequence app_info_id
increment by
start with
nomaxvalue
nominvalue
nocache; CREATE OR REPLACE TRIGGER addAppInfo BEFORE INSERT ON App_INFO FOR EACH ROW
BEGIN
SELECT app_info_id.nextval INTO :new.id FROM dual;
END; ---.unit信息
drop table unit_info cascade constraints;
create table UNIT_INFO
(
UNIT_ID NUMBER() not null,
USERID VARCHAR2() default NULL,
UNIT_NAME VARCHAR2() default NULL,
UNIT_LINKMAN VARCHAR2() default NULL,
ORGANIZATION_CODE VARCHAR2() default NULL,
constraint UNIT_INFO primary key (UNIT_ID)
); drop sequence unit_info_id;
create sequence unit_info_id
increment by
start with
nomaxvalue
nominvalue
nocache; CREATE OR REPLACE TRIGGER addUnitInfo BEFORE INSERT ON UNIT_INFO FOR EACH ROW
BEGIN
SELECT unit_info_id.nextval INTO :new.unit_id FROM dual;
END;

错误截图如下:

这种创建是失败的,因为触发器需要先编译,每创建一个触发器,需要以“/”结束,然后才能执行下一个。

正确的做法应该是这样的;

---.应用信息
drop table app_info cascade constraints;
create table APP_INFO
(
id NUMBER() not null,
appid VARCHAR2() default NULL,
appkey VARCHAR2() default NULL,
md5_key VARCHAR2() default NULL,
aes_key VARCHAR2() default NULL,
permission VARCHAR2() default NULL,
email VARCHAR2() default NULL,
password VARCHAR2() default NULL,
ras_public_key VARCHAR2() default NULL,
constraint APP_INFO primary key (id)
); drop sequence app_info_id;
create sequence app_info_id
increment by
start with
nomaxvalue
nominvalue
nocache; CREATE OR REPLACE TRIGGER addAppInfo BEFORE INSERT ON App_INFO FOR EACH ROW
BEGIN
SELECT app_info_id.nextval INTO :new.id FROM dual;
END;
/
---.unit信息
drop table unit_info cascade constraints;
create table UNIT_INFO
(
UNIT_ID NUMBER() not null,
USERID VARCHAR2() default NULL,
UNIT_NAME VARCHAR2() default NULL,
UNIT_LINKMAN VARCHAR2() default NULL,
ORGANIZATION_CODE VARCHAR2() default NULL,
constraint UNIT_INFO primary key (UNIT_ID)
); drop sequence unit_info_id;
create sequence unit_info_id
increment by
start with
nomaxvalue
nominvalue
nocache; CREATE OR REPLACE TRIGGER addUnitInfo BEFORE INSERT ON UNIT_INFO FOR EACH ROW
BEGIN
SELECT unit_info_id.nextval INTO :new.unit_id FROM dual;
END;
/

 注意:存储过程也是一样的。

连续创建多个Oracle触发器失败,单个创建才成功的解决方法的更多相关文章

  1. [转]连续创建多个Oracle触发器失败,单个创建才成功的解决方法

    连续创建多个Oracle触发器失败,单个创建才成功的解决方法   1.当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误.如下:   create or replace trigger t ...

  2. Oracle触发器原理、创建、修改、删除

    本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...

  3. [转载]oracle 11g不能导出空表的多种解决方法

    原文地址:11g不能导出空表的多种解决方法">oracle 11g不能导出空表的多种解决方法作者:Anlin_Yang ORACLE 11g 用exp命令导出库文件备份时,发现只能导出 ...

  4. Oracle用户密码过期和用户被锁解决方法【转】

    [原因/触发因素] 确定是由于Oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致. [影响和风险] 影响 密码过期后,业务进程连接数据库异 ...

  5. [转]Oracle 10g及pro*c相关问题及解决方法(转)

    Oracle 10g及pro*c相关问题及解决方法 2008年08月21日 星期四 上午 11:21 最近一直在进行ORACLE 10g和PRO*C的学习. 其中遇到了不少的问题: 现列于此,已备他用 ...

  6. MySQL主从失败 错误Got fatal error 1236解决方法

    --MySQL主从失败 错误Got fatal error 1236解决方法 ----------------------------------------------------2014/05/1 ...

  7. Oracle 11gR2 用exp无法导出空表解决方法

    Oracle 11gR2 用exp无法导出空表解决方法 在11gR2中有个新特性,当表无数据时,不分配segment以节省空间.Oracle 当然在运行export导出时,空表则无法导出,可是还是有解 ...

  8. oracle select in超过1000条报错解决方法

    本博客介绍oracle select in超过1000条数据的解决方法,java框架是采用mybatis的,这可以说是一种比较常见的错误:select * from A where id in(... ...

  9. [转]Navicat for oracle 提示 cannot load oci dll,193的解决方法 orcale 11g

    Navicat for oracle 提示 cannot load oci dll,193的解决方法   内网有一台windows server 2012,安装了Navicat 11.1.8 连接or ...

随机推荐

  1. 在winform中,禁止combobox随着鼠标一起滑动!

    在winform中,如果form上或者是控件上有一个combobox控件,当你选择这个控件,当你鼠标移动其他地方,滑动鼠标时,这时combobox的选择值就会随之鼠标一起变化,如果你不想让comboB ...

  2. 深入理解JVM 垃圾收集器(下)G1收集器

    1.回顾CMS 1.1堆内存结构 1.2新生代GC 1.3老年代GC 2.G1收集器 2.1G1实现概览及使用场景 G1的推荐使用场景 2.2GC 2.2.1新生代GC 2.2.2老年代GC 老年代G ...

  3. tp添加分页

    //分页开始 $count=M('article')->where($condition)->count(); $p = intval($p) > 0 ? $p : 1; $page ...

  4. mysql 一些属性

    1)定义id,设置int,涉及的属性有: BINARY二进制 UNSIGNED无符号数 UNSIGNED ZEROFILL 在列字段中使用UNSIGNED ZEROFILL属性,如: 插入int(4) ...

  5. HTML常用标签——思维导图

    如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/38d99149304484

  6. Hibernate缓存何时使用和如何使用

    http://developer.51cto.com/art/201202/315922.htm 1. 关于hibernate缓存的问题: 1.1. 基本的缓存原理 Hibernate缓存分为二级, ...

  7. TF卡.之前的(20180923)

    1.京东上搜到的(购买记录) ZC:64G的应该是 只买了一个 另一个取消了 2.TB上搜到的 购买记录是这样的(注意 也有 取消的) 3. 4. 5.

  8. scala学习手记21 - 传递变长参数

    在Java中是可以使用变长参数的,如下面的方法: public void check(String ... args){ for(String tmp : args){ System.out.prin ...

  9. 阿里云centOS7.4 nginx: [emerg] "server" directive is not allowed here in /etc/nginx/vhost/xxxxxx.conf:2

    里云centOS7.4配置多个站点遇到的问题nginx: [emerg] "server" directive is not allowed here in /etc/nginx/ ...

  10. python基础8 - 变量2

    1. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开 ...