oracle创建表,序列,触发器,自动生成唯一主键
来源:互联网 发布:阿里云cdn价目 编辑:程序博客网 时间:2024/05/18 09:09
数据库oracle和mysql插入数据的区别?
mysql数据库主键字段是increament,则插入数据不需要插入主键字段。数据库会自动生成主键oracle数据库主键字段必须创建序列,则插入数据必须插入主键字段。数据库根据序列自动生成主键
那么如何让oracle数据库插入数据像mysql一样实现主键自增呢?解决方法是:序列+触发器
案例:
plsql图示:
1.创建表:
2.创建序列:
3.创建触发器:
sql实现:
1.创建表
-- Create tablecreate table SJK_BAR_CODE( id NUMBER(12) not null, rule VARCHAR2(255), esp_no VARCHAR2(100), table_name VARCHAR2(10), esp_id NUMBER(12), is_del NUMBER(1), create_time DATE, update_time DATE, esp_content VARCHAR2(100))tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );-- Add comments to the columns comment on column SJK_BAR_CODE.is_del is '1:否,2:是';comment on column SJK_BAR_CODE.esp_content is '档案内容';-- Create/Recreate primary, unique and foreign key constraints alter table SJK_BAR_CODE add constraint PK_BAR_CODE primary key (ID) using index tablespace USERS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );
2.创建序列
-- Create sequence create sequence BAR_CODE_SEQUENCEminvalue 1maxvalue 999999999999999999999999999start with 1increment by 1cache 20;
备注:
minvalue 1 -----最小值
maxvalue 9999999999999999999999999999 ------最大值
increment by 1 -----每次加几个
start with 1 -----从几开始
cache 20 -----缓存值多少
noorder -----一直累加,不排序
nocycle ; --一直累加不循环
3.创建触发器
CREATE OR REPLACE TRIGGER BAR_CODE_TG before insert on SJK_BAR_CODE for each row begin select BAR_CODE_SEQUENCE.nextval into :new.ID from dual; end;
4.插入记录
INSERT INTO SJK_BAR_CODE(rule,esp_no)VALUES ('00-100-2016-0013','100')
5.查询记录
select * from SJK_BAR_CODE
查询结果集:
到此这里发现插入数据主键自动递增,实现像mysql一样的小若。
总结:
1.在实际开发中,具体情况具体分析,也不一定都要创建触发器。
2.若是没有创建触发器,只创建了序列,则插入数据必须插入主键id,主键id值为序列如:
<insert id="addSonDeptOp" parameterType="com.suwei.sysMng.bean.PtDept"> insert into PT_DEPT(DEPT_ID,DEPT_NAME,DEPT_LNAME,DEPT_CODE,DEPT_ADDR,DEPT_PHONE,DEPT_TYPE,DEPT_LEVEL,DEPT_MANAGER,USE_FLAG,FDEPT_ID) values(PT_SEQ.nextval,#{deptName},#{deptLname},#{deptCode},#{deptAddr},#{deptPhone},#{deptType},#{deptLevel},#{deptManager},#{useFlag},#{fdeptId})</insert>3.oracle查询所有序列
select * from all_sequences
结果图:
4.oracle查询当前用户所有序列(常用)
select * from user_sequences结果图:
5.oracle查询所有触发器
select object_name from dba_objects where object_type='TRIGGER'结果图:
6.oracle普通用户的权限查询所有触发器
查询显示所有列:select * from user_source where type='TRIGGER'
7.oracle查询当用用户的所有触发器
则:
select object_name from dba_objects where object_type='TRIGGER' and owner='SJKNEW'8.oracle查询某个触发器具体详细信息
如触发器名称"BAR_CODE_TG"
select text from user_source where type='TRIGGER' and name='BAR_CODE_TG';9.oracle注意查询字段区分大小写,如上诉默认的触发器名称均是大写,若是换成小写则查询为空
0 0
- oracle创建表,序列,触发器,自动生成唯一主键
- Oracle建表,建序列,建触发器,自动生成唯一主键
- Oracle建表,建序列,建触发器,自动生成唯一主键。dual解释
- oracle增加主键列,创建序列,并自动根据序列设值,创建触发器。
- oracle结合序列和触发器生成表的主键
- oracle创建主键生成序列
- oracle的序列使用,创建、表中调用、主键自动生成
- oracle的序列使用,创建、表中调用、主键自动生成
- oracle创建序列及主键生成策略
- oracle使用序列和触发器实现主键的自动增长
- Oracle 实现主键自动增长之序列,触发器
- Oracle主键ID设置自动增长(序列+触发器)
- oracle创建表-序列-触发器
- oracle创建表、序列、触发器
- oracle创建序列和触发器使主键ID自增
- oracle中插入数据时自动生成主键的触发器
- oracle中插入数据时自动生成主键的触发器
- oracle 触发器生成主键的
- 9.2matlab if-else-end分支结构
- web开发优化总结(java)
- shell截取文件名和文件目录
- 步行街-新闻APP
- P1103
- oracle创建表,序列,触发器,自动生成唯一主键
- Android逆向之旅---基于对so中的section加密技术实现so加固
- tomcat多实例部署实践
- Spark:Eclipse手动安装scala开发插件
- spring mvc开发过程知识点记录
- cocos android按home键后应用被系统关闭,再次打开后分辨率错误
- 对于多线程之间的通讯的理解
- 读《所谓情商高,就是会说话》笔记
- 卷积神经网络的训练方法