数据库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 USERSpctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);
-- Add comments to the columns
comment on column SJK_BAR_CODE.is_delis '1:否,2:是';
comment on column SJK_BAR_CODE.esp_contentis '档案内容';
-- Create/Recreate primary, unique and foreign key constraints
alter table SJK_BAR_CODEadd constraint PK_BAR_CODE primary key (ID)using index tablespace USERSpctfree 10initrans 2maxtrans 255storage(initial 64Kminextents 1maxextents 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 intoPT_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注意查询字段区分大小写,如上诉默认的触发器名称均是大写,若是换成小写则查询为空

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

  1. Oracle数据库使用序列my_seq来生成SUTD_ID主键值

    使用如下代码来生成主键: 删除序列:drop sequence my_seq; 创建序列:create sequence my_seq;

  2. Java生成唯一主键

    一般有时候我们需要生成唯一主键id,如果数据库是mysql我们可以使用主键自增,如果是oracle我们可以创建触发器或者序列,如果不借助数据库我们也可以在java层面自己生成唯一主键. 使用随机数: ...

  3. JDBC中事务、批量操作、大数据类型、获取自动生成的主键、等用法

    1 事务的用法 事务的ACID属性: 通俗的说事务:指一组操作,要么都成功执行,要么都不执行-->原子性在所有的操作没有执行完毕之前,其他会话不能够看到中间改变的过程-->隔离性事务发生前 ...

  4. JDBC学习笔记(6)——获取自动生成的主键值处理Blob数据库事务处理

    获取数据库自动生成的主键 [孤立的技术是没有价值的],我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. 具体的代码实现: 1 /** 2 * ...

  5. 五.获得MYSQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  6. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  7. mybatis 增删改查、批量插入和删除以及自动生成uuid主键和分页

    Mapper接口: public int update(Admin admin); public Admin selectByUserName(String account); public List ...

  8. oracle唯一索引能删除吗,Oracle:ora-02429:无法用于删除强制唯一/主键的索引 解决...

    今天打算删除orcale数据库中无用的表空间,发现报错,查资料删除,写个过程留着备用. 1.drop tablespace dldata INCLUDING CONTENTS CASCADE CONS ...

  9. Oracle使用序列+触发器实现表自增主键

    1.建表 -- Create table 创建表 test create table TEST (testid NUMBER not null,name NVARCHAR2(20) not null ...

最新文章

  1. android上传图片崩溃,导致安卓手机死机的照片拍摄者表示这张照片是无意之举...
  2. Kail Linux渗透测试教程之Recon-NG框架
  3. wannacry作者捉到了吗_不会阅读空气是情商低吗?如何提升自己的情商?
  4. ITK:将两个图像与棋盘格图案组合在一起
  5. 搭建elasticsearch测试工程
  6. ECMAScript5 Object的新属性方法
  7. 如何以 mock server 的方式本地启动 SAP UI5 应用,使它不连接服务器端 OData 服务
  8. python中的__new__和__init__
  9. 大学学了一个学期的 C 语言,我们应该明白哪些知识点?别像没学一样!
  10. --设备丢失故障表.
  11. 奇安信代码安全实验室帮助微软修复远程内核级漏洞,获官方致谢
  12. 在互联网时代如何工作得更简单
  13. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现
  14. 初学STM32之使用STM32CubeMX编写跑马灯程序
  15. php金税系统打印接口,金税开票接口解决方案
  16. WPF_界面_图片/界面/文字模糊解决之道整理
  17. crmeb pro版获取短信验证码失败解决方法
  18. 给全栈人员,如何用ps让图片不改变尺寸分辨率大小的情况下,让图片质量变的更小
  19. win7计算机图标排列,win7文件夹内图标取消自动排列,取消自动排列
  20. 5款服装进销存软件测评,教您如何挑选出好用的

热门文章

  1. 微软承认最新Win10更新会致电脑蓝屏死机
  2. [AWT] 弹球小游戏(实现篇)
  3. 词的表示方法笔记——词向量+代码练习
  4. react-5 高阶函数 (HOC)(防抖节流) --- 高阶组件(HOF)(拖拽)
  5. 不谋一时不足以谋一域_“不谋万世者不足谋一时,不谋全局者不足谋一域”是什么意思?...
  6. python sizeof函数_sizeof运算符和strlen函数 ZeroMemory函数和memset函数
  7. HashCode方法
  8. JVM内功心法-JVM内存模型之内存区域
  9. Android内存优化 1
  10. Python注释以及快捷键