Oracle 创建触发器实现自增长
Oracle中没有主键,要实现自增长,需要创建触发器,每次插入数据的时候进行ID赋值。
环境:Oracle11,Navicat工具连接
创建了一个表,字段如下(字段名,表名都需要大写,你小写了还无效。。。):

--如果表中存在记录,先把原来的数据赋值
UPDATE VD_EVENTS_DATA SET ID=ROWNUM;
--创建序列,设置初始值和每次增长值
CREATE SEQUENCE VD_EVENTS_DATA_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1000 NOCACHE;
--创建触发器,请注意这个格式。。。
CREATE OR REPLACE TRIGGER VD_EVENTS_DATA_INS_TRG BEFORE INSERT ON VD_EVENTS_DATA FOR EACH ROW WHEN(NEW.ID IS NULL OR NEW.ID = 0)
BEGIN
SELECT VD_EVENTS_DATA_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
如果出现下面错误:
ORA-24344: success with compilation error 成功,但编译出错
你会发现你的触发器创建成功了,但是你添加数据的时候回报错。
原因:我把上面的sql语句美化了。。。就出错了,妈耶,醉了醉了

CREATE
OR REPLACE TRIGGER RB_REFUSECLASSIFY_INS_TRG BEFORE INSERT ON RB_REFUSECLASSIFY FOR EACH ROW WHEN ( NEW.ID IS NULL OR NEW.ID = 0 ) BEGIN
SELECT
RB_REFUSECLASSIFY_ID_SEQ.NEXTVAL INTO : NEW.ID
FROM
DUAL; END;
/
请按照最上面的SQL语句结构来,测试是OK的
Oracle 创建触发器实现自增长的更多相关文章
- Oracle创建触发器实现主键自增
CREATE OR REPLACE TRIGGER "trigger_empl" before insert on extjsTest1.t_empl for each row b ...
- oracle创建触发器及作用举例
--创建触发器及作用举例 create or replace trigger tri before delete on emp --在删除emp表数据之前需要做的事根据自己的业务去写,before是在 ...
- oracle创建表空间自增长和创建用户
/* 步骤: 1.创建表空间 2.创建用户 3.用户授权 */ /*创建表空间*/ create tablespace QCJ_TABLESPACE /*表空间物理文件名称*/ datafile 'Q ...
- oracle创建触发器
create or replace trigger 触发器名字 触发时间 触发事件 after(before) insert or update or delete on 表名 for each r ...
- Oracle - java创建Oracle 的触发器
Oracle - java创建Oracle 的触发器 今天碰到这个问题,遇到点问题,到这来 总结一下解决的办法, 需求,为一个用户当中的表增加一个自动增长列,我还没有学Oracle 的这部分,只是简单 ...
- Oracle创建自增长主键
Oracle主键常用的分为UUID和自增长int两种,下面简单说下各自的优缺点: UUID的优点 1.生成方便,不管是通过sys_guid() 还是java的uuid都能很方便的创建UUID. 2.适 ...
- Oracle数据库——触发器的创建与应用
一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数 ...
- oracle 序列 + 触发器 实现 ID自动增长
1.创建序列 create sequence emp_sequence increment by ----每次增加几个 minvalue ----最小值为1 nomaxvalue----不限制最大值 ...
- Oracle中创建触发器示例及注意事项
1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...
随机推荐
- 读EntityFramework.DynamicFilters源码_心得_示例演示02
上次对EntityFramework.DynamicFilters整体的项目结构有了一个认识,这次我们就通过阅读说明文档,示例项目,和单元测试,来动手构建一个我们的体验项目,通过对动态过滤器的使用,使 ...
- HDU 4283 (第k个出场 区间DP)
http://blog.csdn.net/acm_cxlove/article/details/7964594 http://www.tuicool.com/articles/jyaQ7n http: ...
- vue 数组重复,循环报错
Vue.js默认不支持往数组中加入重复的数据.可以使用track-by="$index"来实现.
- Activiti 配置Oracle不能自动创建表解决方法
使用配置文件创建工作流表 <bean id="processEngineConfiguration" class="org.activiti.engine.impl ...
- 《一马当先 O2O创业真人秀》阿里云创客+项目提交报名中
传统行业与互联网的相互融合,线上与线下的互通,正在掀起一股“互联网+”新风潮和创业热潮.支付宝钱包.快的打车.淘点点……这些耳熟能详的应用早已成为人们生活的一部分.而越来越多的“互联网+”创新项目,将 ...
- 【Android】Android studio 编译问题:finished with non-zero exit value 2
1.Android studio 编译问题:finished with non-zero exit value 2 问题: Error:Execution failed for task ':andr ...
- tableview setData 设置数据(结构体对象)
定义设置的对象类型 Q_DECLARE_METATYPE(LISTITEMDATA *) 设置数据类型 LISTITEMDATA *ptask = &(const_cast<LISTIT ...
- C#获取apk版本信息
获取很多人都会问我为什么要写这个博客,原因很简单,这次研发apk版本信息的时候网上查了很多的资料都没有这方面的信息,因此这次功能完了想写下方法,如果以后博友们遇到了可以直接copy,不用花很多的时间, ...
- 使用Axure管理团队项目以及分享原型
第一部分:使用Axure管理团队项目 首先,你要有一个Axure账户 呵呵哒.注册地址:http://share.axure.com 发起团队项目 在浏览器登录 Axure share(网速很卡很卡) ...
- UML面向对象建模基础
一个比较好的UML教程PPT https://wenku.baidu.com/view/cf80902e26284b73f242336c1eb91a37f11132ac.html