oracle创建表,序列,触发器,自动生成唯一主键详解数据库
数据库oracle和mysql插入数据的区别?
mysql数据库主键字段是increament,则插入数据不需要插入主键字段。数据库会自动生成主键
oracle数据库主键字段必须创建序列,则插入数据必须插入主键字段。数据库根据序列自动生成主键
那么如何让oracle数据库插入数据像mysql一样实现主键自增呢?解决方法是:序列+触发器
案例:
plsql图示:
1.创建表:
2.创建序列:
3.创建触发器:
sql实现:
1.创建表
-- Create table create 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_SEQUENCE minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 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 name from user_source where type= TRIGGER group by name
查询显示所有列:select * from user_source where type= TRIGGER
7.oracle查询当用用户的所有触发器
如当前oracle用户名 SJKNEW
则:
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注意查询字段区分大小写,如上诉默认的触发器名称均是大写,若是换成小写则查询为空
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/6671.html
mysqloracle相关文章
- 设置Oracle表自增主键(oracle建表主键自增)
- Oracle 数据库启动状态检查(oracle启动状态)
- 灵活掌握Oracle游标函数,提升编程效率(oracle游标函数)
- 数据库Oracle减慢数据库发展的影响(oracle减去)
- 利用Oracle触发器实现数据库自动管理(oracle触发器类型)
- Oracle数据库中触发器类型介绍(oracle触发器类型)
- 精通 Oracle 触发器类型,成为数据库代表(oracle触发器类型)
- 清理Oracle数据库表空间的步骤(清理oracle表空间)
- StepbyStep Guide: How to Add Oracle Listener in 25 Easy Steps(添加oracle监听)
- 如何进行Oracle数据库监测,保障业务稳定?(oracle数据库监测)
- Oracle数据库开发之常用包介绍(oracle常用的包)
- ASRU与Oracle无缝互通拓展数据库空间(asru oracle)
- AIX7系统下安装Oracle数据库的指南(aix7安装oracle)
- Oracle数据库中的汉字输入管理(oracle中的汉字)
- Oracle 数据库改变企业数据处理模式(oracle 例题)
- 型深入浅出Oracle数据库驱动类型探讨(oracle使用的驱动类)
- 提高数据库性能Oracle优化器的使用(oracle 优化器使用)
- Oracle数据库管理指南中文版CHM手册(oracle中文版chm)
- Oracle数据库中的关联表必要性与实现(oracle中关联关系表)
- Oracle的死锁拖累劝不住的锁(oracle不释放锁)
- 串Oracle优于字符串的数据库(oracle 不等于字符)
- Oracle数据库上手指南开启大数据之旅(oracle上手)
- 从Oracle SQL精粹中走向数据库专家(oracle sql精粹)
- Oracle杯大赛增添新颜色,释放激情(oracle cup数量)
- 利用Oracle ADG轻松实现数据库迁移(oracle adg下载)