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 创建触发器实现自增长的更多相关文章

  1. Oracle创建触发器实现主键自增

    CREATE OR REPLACE TRIGGER "trigger_empl" before insert on extjsTest1.t_empl for each row b ...

  2. oracle创建触发器及作用举例

    --创建触发器及作用举例 create or replace trigger tri before delete on emp --在删除emp表数据之前需要做的事根据自己的业务去写,before是在 ...

  3. oracle创建表空间自增长和创建用户

    /* 步骤: 1.创建表空间 2.创建用户 3.用户授权 */ /*创建表空间*/ create tablespace QCJ_TABLESPACE /*表空间物理文件名称*/ datafile 'Q ...

  4. oracle创建触发器

    create or replace trigger 触发器名字 触发时间 触发事件 after(before)  insert or update or delete on 表名 for each r ...

  5. Oracle - java创建Oracle 的触发器

    Oracle - java创建Oracle 的触发器 今天碰到这个问题,遇到点问题,到这来 总结一下解决的办法, 需求,为一个用户当中的表增加一个自动增长列,我还没有学Oracle 的这部分,只是简单 ...

  6. Oracle创建自增长主键

    Oracle主键常用的分为UUID和自增长int两种,下面简单说下各自的优缺点: UUID的优点 1.生成方便,不管是通过sys_guid() 还是java的uuid都能很方便的创建UUID. 2.适 ...

  7. Oracle数据库——触发器的创建与应用

    一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数 ...

  8. oracle 序列 + 触发器 实现 ID自动增长

    1.创建序列 create sequence emp_sequence increment by ----每次增加几个 minvalue ----最小值为1 nomaxvalue----不限制最大值 ...

  9. Oracle中创建触发器示例及注意事项

    1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...

随机推荐

  1. fzu 2136 取糖果 好几种方法解决。

    Problem 2136 取糖果 Accept: 39    Submit: 101 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem ...

  2. 6、springboot之根目录设置

    访问的时候用

  3. Cocos2d-js 开发记录:骨骼动画载入

    不得不说cocos2d-js的文档实在是少,骨骼动画的载入和C++版本的好像还有些不同不能直接依样画葫芦. 一个由cocos studio编辑生成的骨骼动画一般会包含如下几个文件: .ExportJs ...

  4. 关于css伪类,伪元素详解总结

    伪类 伪类就是一种虚构的状态或者说是一个具有特殊属性的元素可以使用CSS进行样式修饰.常见的几种伪类是: :link , :visited , :hover , :active , :first-ch ...

  5. Idea创建Hibernate bean类和.xml文件

    Idea通过表结构反向生成Hibernate实体类和映射文件 首先:之前通过Eclipse反向生成Hibernate的实体类,很傻瓜式,基本上不用配置.但是Idea通过表结构反向生成hibernate ...

  6. 一个对inner jion ...on 的sql多表联合查询的练习

    create database practiceSql; use practiceSql; -- create table student( `id` bigint not null auto_inc ...

  7. 配置centos7 网卡

    进入root模式,输入 cd /etc/sysconfig/network-scripts/ 按Tab键查看网卡配置文件名称,然后进入编辑: 如: cd /etc/sysconfig/network- ...

  8. html高度塌陷问题解决

    高度塌陷的问题: 当开启元素的BFC以后,元素将会有如下的特性 1 父元素的垂直外边距不会和子元素重叠    开启BFC的元素不会被浮动元素所覆盖    开启BFC的元素可以包含浮动的子元素 如何开启 ...

  9. webapi下载文件

    [HttpGet] public IHttpActionResult ExportData() { ... var dt = ExcelHelper.ListToDataTable(list); va ...

  10. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...