oracle触发器失败不回滚,连续创建多个Oracle触发器失败,单个创建才成功的解决方法...

.应用信息

drop table app_info cascade constraints;

create table APP_INFO

(

id NUMBER(9) not null,

appid VARCHAR2(255) defaultNULL,

appkey VARCHAR2(255) defaultNULL,

md5_key VARCHAR2(255) defaultNULL,

aes_key VARCHAR2(255) defaultNULL,

permission VARCHAR2(3000) defaultNULL,

email VARCHAR2(255) defaultNULL,

password VARCHAR2(255) defaultNULL,

ras_public_key VARCHAR2(255) defaultNULL,

constraint APP_INFO primary key (id)

);

drop sequence app_info_id;

create sequence app_info_id

increment by1start with1nomaxvalue

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;---2.unit信息

drop table unit_info cascade constraints;

create table UNIT_INFO

(

UNIT_ID NUMBER(9) not null,

USERID VARCHAR2(255) defaultNULL,

UNIT_NAME VARCHAR2(128) defaultNULL,

UNIT_LINKMAN VARCHAR2(64) defaultNULL,

ORGANIZATION_CODE VARCHAR2(64) defaultNULL,

constraint UNIT_INFO primary key (UNIT_ID)

);

drop sequence unit_info_id;

create sequence unit_info_id

increment by1start with1nomaxvalue

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;

错误截图如下:

1ad4d52e17fac13775283af9da35e3a3.png

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

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

---1.应用信息

drop table app_info cascade constraints;

create table APP_INFO

(

id NUMBER(9) not null,

appid VARCHAR2(255) defaultNULL,

appkey VARCHAR2(255) defaultNULL,

md5_key VARCHAR2(255) defaultNULL,

aes_key VARCHAR2(255) defaultNULL,

permission VARCHAR2(3000) defaultNULL,

email VARCHAR2(255) defaultNULL,

password VARCHAR2(255) defaultNULL,

ras_public_key VARCHAR2(255) defaultNULL,

constraint APP_INFO primary key (id)

);

drop sequence app_info_id;

create sequence app_info_id

increment by1start with1nomaxvalue

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;/

---2.unit信息

drop table unit_info cascade constraints;

create table UNIT_INFO

(

UNIT_ID NUMBER(9) not null,

USERID VARCHAR2(255) defaultNULL,

UNIT_NAME VARCHAR2(128) defaultNULL,

UNIT_LINKMAN VARCHAR2(64) defaultNULL,

ORGANIZATION_CODE VARCHAR2(64) defaultNULL,

constraint UNIT_INFO primary key (UNIT_ID)

);

drop sequence unit_info_id;

create sequence unit_info_id

increment by1start with1nomaxvalue

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触发器失败,单个创建才成功的解决方法

标签:pid   word   成功   strong   nocache   har   触发器   default   const

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/shawWey/p/8024095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值