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

---.应用信息
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. 华为交换机S5700系列配置镜像端口(M:N)

    配置本地端口镜像组网图(M:N) 组网需求 如图所示,某公司研发一部.研发二部和市场部通过Switch与外部Internet通信,监控设备Server1.Server2与Switch直连. 现在希望将 ...

  2. 谈谈对Canal(增量数据订阅与消费)的理解

    概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB). 起源:早期,阿里巴巴B2B公司 ...

  3. SQL查询以某个字母开头

    select * from a where left(a.name, 1)='H'; 或 select * from a where a.name REGEXP ''^(B|S)'';

  4. spark SQL学习(load和save操作)

    load操作:主要用于加载数据,创建出DataFrame save操作:主要用于将DataFrame中的数据保存到文件中 代码示例(默认为parquet数据源类型) package wujiadong ...

  5. HttpServletResponse 的 sendError( )方法以及常用的HttpServletResponse常量级错误代码

    HttpServletResponse 的 sendError( )方法以及常用的HttpServletResponse常量级错误代码   转载:http://hi.baidu.com/yanfei_ ...

  6. python学习(一)——python与人工智能

    最近在朋友圈转起了一张图.抱着试一试的心态,我肝了些课程.都是与python相关的.     课程一:你不知道的python         讲师:王玉杰  (混沌巡洋舰联合创始人 & web ...

  7. tensorflow笔记:模型的保存与训练过程可视化

    tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代码分析 ...

  8. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 语法分析器在此文档中遇到多个 "64,000" 实体扩展; 这是应用程序施加的限制

    使用SAX解析XML文件.XML文件有1.5G,程序抛出了这个问题: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 语法 ...

  9. npm install 时总是报phantomjs-prebuilt@2.1.14安装失败

    在npm install时总是报如下错误, 尝试单独安装:npm install phantomjs-prebuilt@2.1.14 还是报错 Please report this full log ...

  10. Mac系统下安装ipython分别支持python2和python3

    操作系统:Mac10.11.5 python2.7.13 python3.6.1 安装python2: brew install python 安装python3: brew install pyth ...