我们都知道oracle主键自增利用的是序列sequence。我们先创建一个sequence:

 create sequence test_sequence
start with 1
increment by 1
maxvalue 9999999
nocache

然后新建一张表,例如te_user表:

create table te_user(
user_id number(11) primary key,
user_name varchar2(50),
user_pwd varchar2(50)
)

如果不用trigger的话,我们插入数据是用到了sequence的nextval属性,例如:

insert into te_user values(test_sequence.nextval,'张三','')
或者
insertinto te_user(user_id,user_name,user_pwd) values(test_sequence.nextval,'李四','')

那么如果我们定义了trigger的话,就不需要每次都带入sequence来实现了,新建一个trigger来实现这一目的:

create or replace trigger test_trigger before insert
on te_user
for each row
declare
next_user_id number;
begin
select test_sequence into next_user_id from dual;
:new.user_id :=next_user_id;
end test_trigger

这样每次te_user表的insert操作都会触发此触发器,我们再进行表插入时只需要:

insert into te_user(user_id,user_pwd) values ('王五','')

就可以了。

最新文章

  1. AtomicBoolean介绍与使用
  2. memcache入门笔记
  3. C和指针 第十二章 使用结构和指针
  4. js 0.1+0.2!=0.3
  5. ClientAbortException 异常解决办法
  6. easyui combobox 中实现 checkbox
  7. 利用API方式进行数据库的增删改查
  8. 生成中文版JavaDoc
  9. Eclipse报错 Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
  10. ntoskrnl.exe损坏或丢失的解决方式
  11. 3036: 绿豆蛙的归宿 - BZOJ
  12. 安装64位的oracle连接客户端
  13. getuid和geteuid的区别
  14. linux之sed的常用操作
  15. HBuilder的webview操作
  16. js函数的使用
  17. mysql-cluster集群配置
  18. Java面试题精选,大型网站系统架构你不得不懂的10个问题
  19. JavaScript使用childNodes和children
  20. RadGridView添加序号列

热门文章

  1. 铰链joints
  2. DBCP连接池原理分析(转载)
  3. 在Linux中安装适用于arm64位的nodejs
  4. Luogu P1114 “非常男女”计划/Luogu P2697 宝石串
  5. VUE this.$http.post 与后端flask 数据交互
  6. Python通过yagmail和smtplib模块发送简单邮件
  7. django Error: HINT: Add or change a related_name argument to the definition for 'UserProfile.groups' or 'User.groups'.
  8. kombu在redis中的键值名
  9. Java的浅克隆与深克隆
  10. trigger 和 triggerHandler(),自定义事件