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

---.应用信息
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. QMesageBox的使用

    一.使用构造函数弹出对话框 1. QMessageBox msgBox://最简单的对话框,里面什么也没有 QString str = “test”: msgBox.setText(str); msg ...

  2. 使用shiro缓存用户身份信息的时候报:java.io.NotSerializableException: org.apache.shiro.util.SimpleByteSource

    最近在使用shiro缓存用户的身份信息的时候,报了simpleByteSource不能序列化,跟进源码一看,原来这个类没有实现序列化的接口,但是我在缓存身份信息的实现又要用到这个类,解决方法:重写一个 ...

  3. HttpStatusCode

    https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netframework-4.7.2 422 Un ...

  4. 使用Entity Framework时遇到的各种问题总结

    在这里记录一下之前使用Entity Framework(4.3.1版本)遇到的问题. 更新没有设置主键的表 在默认情况下,EF不能对一个没有主键的表进行更新.插入和删除的动作.用xml方式查看edmx ...

  5. vmware配置网卡

    虚拟机网络配置 1. 启用VMWare虚拟网卡 如果没有查看到vmnet8这个网络连接,打开VMWare, 2. 设置虚拟机:选中安装好的虚拟机右键设置. 3. 设置虚拟机系统. 指令:vi /etc ...

  6. ToggleButton开关状态按钮控件

    ToggleButton开关状态按钮控件 一.简介 1. 2.ToggleButton类结构 父类是CompoundButton,引包的时候注意下 二.ToggleButton开关状态按钮控件使用方法 ...

  7. python学习笔记(datetime、字符串转换)

    datetime对象与字符串可以互相转化 代码如下: from datetime import datetime def datetime_string(time): return time.strf ...

  8. Selenium with Python 007 - Cookie处理

    Webdriver 读取.添加.删除cookie信息基本用法 获得Cookie信息:driver.get_cookies() 添加Cookie信息:driver.add_cookie(cookie_d ...

  9. Educational Codeforces Round 38

    http://codeforces.com/contest/938 A:sb题 //#pragma comment(linker, "/stack:200000000") //#p ...

  10. uva 10891 区间dp+记忆化搜索

    https://vjudge.net/problem/UVA-10891 给定一个序列x,A和B依次取数,规则是每次只能从头或者尾部取走若干个数,A和B采取的策略使得自己取出的数尽量和最大,A是先手, ...