oracle创建表,序列,触发器,自动生成唯一主键

那么如何让oracle数据库插入数据像mysql一样实现主键自增呢?解决方法是:序列+触发器


案例:

plsql图示:

1.创建表:



2.创建序列:



3.创建触发器:



sql实现:

1.创建表

[sql]  view plain  copy
  1. -- Create table  
  2. create table SJK_BAR_CODE  
  3. (  
  4.   id          NUMBER(12) not null,  
  5.   rule        VARCHAR2(255),  
  6.   esp_no      VARCHAR2(100),  
  7.   table_name  VARCHAR2(10),  
  8.   esp_id      NUMBER(12),  
  9.   is_del      NUMBER(1),  
  10.   create_time DATE,  
  11.   update_time DATE,  
  12.   esp_content VARCHAR2(100)  
  13. )  
  14.   
  15. tablespace USERS  
  16.   pctfree 10  
  17.   initrans 1  
  18.   maxtrans 255  
  19.   storage  
  20.   (  
  21.     initial 64K  
  22.     minextents 1  
  23.     maxextents unlimited  
  24.   );  
  25.   
  26. -- Add comments to the columns   
  27. comment on column SJK_BAR_CODE.is_del  
  28.   is '1:否,2:是';  
  29. comment on column SJK_BAR_CODE.esp_content  
  30.   is '档案内容';  
  31.   
  32. -- Create/Recreate primary, unique and foreign key constraints   
  33. alter table SJK_BAR_CODE  
  34.   add constraint PK_BAR_CODE primary key (ID)  
  35.   using index   
  36.   tablespace USERS  
  37.   pctfree 10  
  38.   initrans 2  
  39.   maxtrans 255  
  40.   storage  
  41.   (  
  42.     initial 64K  
  43.     minextents 1  
  44.     maxextents unlimited  
  45.   );  


2.创建序列

[sql]  view plain  copy
  1. -- Create sequence   
  2. create sequence BAR_CODE_SEQUENCE  
  3. minvalue 1  
  4. maxvalue 999999999999999999999999999  
  5. start with 1  
  6. increment by 1  
  7. cache 20;  


备注:

minvalue 1          -----最小值
maxvalue 9999999999999999999999999999 ------最大值
increment by 1     -----每次加几个
start with 1           -----从几开始
cache 20             -----缓存值多少
noorder               -----一直累加,不排序
nocycle ;              --一直累加不循环


3.创建触发器

[sql]  view plain  copy
  1. CREATE OR REPLACE TRIGGER  BAR_CODE_TG   
  2. before insert on SJK_BAR_CODE for each row   
  3. begin   
  4.   select BAR_CODE_SEQUENCE.nextval into :new.ID from dual;   
  5. end;  


4.插入记录

[sql]  view plain  copy
  1. INSERT INTO SJK_BAR_CODE(rule,esp_no)VALUES ('00-100-2016-0013','100')  


5.查询记录

[sql]  view plain  copy
  1. select * from SJK_BAR_CODE  

查询结果集:



到此这里发现插入数据主键自动递增,实现像mysql一样的小若。


总结:

1.在实际开发中,具体情况具体分析,也不一定都要创建触发器。

2.若是没有创建触发器,只创建了序列,则插入数据必须插入主键id,主键id值为序列如:

[html]  view plain  copy
  1. <insert id="addSonDeptOp" parameterType="com.suwei.sysMng.bean.PtDept">  
  2.     insert into  
  3.     PT_DEPT(DEPT_ID,DEPT_NAME,DEPT_LNAME,DEPT_CODE,DEPT_ADDR,DEPT_PHONE,DEPT_TYPE,DEPT_LEVEL,DEPT_MANAGER,USE_FLAG,FDEPT_ID)  
  4.     values(PT_SEQ.nextval,#{deptName},#{deptLname},#{deptCode},#{deptAddr},#{deptPhone},#{deptType},#{deptLevel},#{deptManager},#{useFlag},#{fdeptId})  
  5. </insert>  
3.oracle查询所有序列

[sql]  view plain  copy
  1. select * from all_sequences  

结果图:


4.oracle查询当前用户所有序列(常用)

[sql]  view plain  copy
  1. select * from user_sequences  
结果图:


5.oracle查询所有触发器

[sql]  view plain  copy
  1. select object_name from dba_objects where object_type='TRIGGER'  
结果图:


6.oracle普通用户的权限查询所有触发器

select  name  from  user_source  where  type='TRIGGER'  group  by name


查询显示所有列:select * from user_source where type='TRIGGER'

7.oracle查询当用用户的所有触发器

如当前oracle用户名"SJKNEW"

则:

[sql]  view plain  copy
  1. select object_name from dba_objects where object_type='TRIGGER' and  owner='SJKNEW'  
8.oracle查询某个触发器具体详细信息

如触发器名称"BAR_CODE_TG"

[sql]  view plain  copy
  1. select text from user_source where type='TRIGGER' and name='BAR_CODE_TG';   
9.oracle注意查询字段区分大小写,如上诉默认的触发器名称均是大写,若是换成小写则查询为空
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值