1. Oracle实现主键自动增长

一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现。

定义序列用于获取递增数字

CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n]              [{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}]

定义触发器,关联序列和表,并在插入数据前补充主键ID

create [or replace] tigger 触发器名 before insert
on 表名
[for each row]
beginselect 序列名.nextval into :new.id from dual;
end

一般我们会加上条件以应对已经指定主键的情况

create [or replace] tigger 触发器名 before insert
on 表名
[for each row WHEN(NEW.ID IS NULL)]
beginselect 序列名.nextval into :new.id from dual;
end

2. EntityFramework默认值带来的问题

通过触发器和序列一般我们就可以实现主键的自动增长,但是在EF中,实体中的主键会被赋值为默认值0。这导致触发器达不到触发的(默认触发条件),
这时我们就需要调整触发器执行条件:当未指定id或者id为默认值0时自动生成主键。

create [or replace] tigger 触发器名 before insert
on 表名
[for each row WHEN(NEW.ID IS NULL or NEW.ID = 0)]
beginselect 序列名.nextval into :new.id from dual;
end

转载于:https://www.cnblogs.com/zhangdk/p/8711304.html

EntityFramework实体默认值遇到Oracle自增主键相关推荐

  1. oracle自增主键用途,Oracle主键自增

    在设置主键自增时有几种方法,今天介绍其中一种方法:sequence+trigger 1.创建表 create table tbl_card --创建校园卡表 ( id int primary key, ...

  2. Oracle自增主键的添加[sequence]--表数据已存在

    --增加主键ID alter table CLERK_COMPARE add id number(16);--设置sequence使ID自增 create sequence SEQ_IDminvalu ...

  3. mybatis获取mysql自增主键_Mybatis获取数据库自增主键

    一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样 //测试添加 Employee employee = new Employee(null, "jerry4",n ...

  4. MySQL自增主键auto_increment原理 与 自增主键出现间隙不连续现象的定位

    一.背景: 1.1.业务描述与SQL: 为了保存机器上报信息(业务需求是每个机器只需保存最新的一条记录),原 SQL 语句如下(其中,machineId 的为唯一索引,t_report_pad 的 i ...

  5. mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列

    parameterType: 参数类型, 可以省略 mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys();  useGenerate ...

  6. oracle 添加默认值列,Oracle 11g增加列,并带默认值的新特性

    永久链接:http://www.ixdba.com/html/y2007/m08/159-oracle11g-add-column.html 老和尚在他的blog中描述了了这个问题,我这里做一个详细的 ...

  7. datatable如何生成级联数据_通过源码分析Mybatis是如何返回数据库生成的自增主键值?...

    在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...

  8. 通过源码分析Mybatis是如何返回数据库生成的自增主键值?

    在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象. 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增 ...

  9. Mysql和Oracle获取自增主键

    mysql <!-- parameterType:参数类型,可以省略,      获取自增主键的值:         mysql支持自增主键,自增主键值的获取,mybatis也是利用statem ...

最新文章

  1. mysql5.7+ 虚拟列,json使用初体验
  2. 音视频技术开发周刊 | 176
  3. 亚信安全首推MSP创新型合作伙伴业务模式 助力企业畅享云端快捷服务
  4. UpdatePanelAnimation
  5. 留学生吐槽阿里面试几宗罪:槽点太多,不符合阿里大企业形象!
  6. win10自带sftp服务器_win10搭建sftp服务器搭建
  7. rust石墙掉耐久_rust恢复房子耐久 | 手游网游页游攻略大全
  8. 与世界有怎样的关系,便拥有了怎样的自己
  9. 一名菜鸟程序猿对前端的简单理解及介绍
  10. CSS中的行盒(line-boxes)和行内盒子(line-box)
  11. 日语学习之——长音促音
  12. 将 C++ 对象暴露给 QML
  13. 如何快速找出电脑里的所有视频\照片\文件
  14. WebRTC实践获取视频流
  15. WPF 通用权限开发框架 (ABP)
  16. Unity学习——音效系统+音频过滤器+音频混响区+音频管理器
  17. kinect V2开发API
  18. php 模拟 cas,CAS的PHP客户端实践:PHP程序实现单点登录
  19. Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found
  20. 使用Python爬取itcast网站的视频

热门文章

  1. Promise 让异步更优
  2. Android在Service中显示Dialog
  3. 虚拟机安装 xp步骤(参照百度文库)
  4. ubuntu 下重装mysql若干问题
  5. ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[上篇]
  6. Oracle 11g Release 1 (11.1) Oracle 本文索引的四种类型
  7. Linux系统的启动引导过程(转)
  8. WenLan-10亿参数!别只玩GPT,来看看人大中科院联手打造第一个大规模多模态中文预训练模型BriVL...
  9. 深圳 | 腾讯AI Lab招聘CVCG研究员及实习生
  10. PyTorch如何加速数据并行训练?分布式秘籍大揭秘