EF中创建、使用Oracle数据库的Sequence(序列)功能
2016-08-11 11:34
369 查看
** 背景 **
项目中订单号原来的生成规则由日期加随机数组成,后期需求决定将订单号生成规则更改为生成日期加当天当前订单数。
每天的订单数都是从0开始的,每生成一个订单,订单数就应该加1.订单数应该是持久的,写在Session中或者Memcached缓存中,当网站重启或者服务器重启时都会面临丢失的问题,所以只能存在数据库中。幸好Oracle数据库提供了Sequence(序列)功能,我们来看下Sequence(序列)的概述及其用法。
** 概述 **
Oracle提供了Sequence对象,由系统提供自增长的序列号,通常用于生成数据库的自增长主键或序号的地方。
Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。1
** 基本用法 **
CREATE SEQUENCE emp_sequence -序列名
INCREMENT BY 1 — 每次递增数值
START WITH 1 — 从1开始计数
MAXVALUE 999999 --最大值 || NOMAXVALUE — 不设置最大值
CYCLE - 循环,达到最大值从最小值开始||NOCYCLE — 一直累加,不循环
CACHE 10;-缓存数值
下面我们就来看EF的DbContext具体使用:
** 1. 判断是否存在名为
如数据库中存在该序列,则返回的数值应大于0。
** 2. 每天的订单数都应该是从新开始的,所以简单做法如果存在
** 3. 创建名为
** 4. 获取最新订单数 **
原创文章,如有转摘请注明来源!
项目中订单号原来的生成规则由日期加随机数组成,后期需求决定将订单号生成规则更改为生成日期加当天当前订单数。
每天的订单数都是从0开始的,每生成一个订单,订单数就应该加1.订单数应该是持久的,写在Session中或者Memcached缓存中,当网站重启或者服务器重启时都会面临丢失的问题,所以只能存在数据库中。幸好Oracle数据库提供了Sequence(序列)功能,我们来看下Sequence(序列)的概述及其用法。
** 概述 **
Oracle提供了Sequence对象,由系统提供自增长的序列号,通常用于生成数据库的自增长主键或序号的地方。
Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。1
** 基本用法 **
CREATE SEQUENCE emp_sequence -序列名
INCREMENT BY 1 — 每次递增数值
START WITH 1 — 从1开始计数
MAXVALUE 999999 --最大值 || NOMAXVALUE — 不设置最大值
CYCLE - 循环,达到最大值从最小值开始||NOCYCLE — 一直累加,不循环
CACHE 10;-缓存数值
下面我们就来看EF的DbContext具体使用:
** 1. 判断是否存在名为
ODORDER的序列 **
int count = context.Database.SqlQuery<int>("SELECT count(*) FROM All_Sequences where Sequence_name='ODORDER'").FirstOrDefault()
如数据库中存在该序列,则返回的数值应大于0。
** 2. 每天的订单数都应该是从新开始的,所以简单做法如果存在
ODORDER该序列,我们先删除. **
context.Database.ExecuteSqlCommand("DROP SEQUENCE ODORDER")
** 3. 创建名为
ODORDER的序列 **
context.Database.ExecuteSqlCommand("CREATE SEQUENCE ODORDER INCREMENT BY 1 START WITH 100000 MAXVALUE 900000 MINVALUE 100000 CYCLE CACHE 20 ");
** 4. 获取最新订单数 **
context.Database.SqlQuery<int>("select ODORDER.nextval from dual").FirstOrDefault()
原创文章,如有转摘请注明来源!
相关文章推荐
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle:序列 SEQUENCE 创建语法与使用
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle序列(Sequence)创建、使用、修改、删除
- Oracle数据库关于创建使用数据库、表空间呢、多表、视图、存储过程、序列的使用
- Oracle 创建自增字段的方法—使用序列方法(2)
- Oracle 创建自增字段的方法—使用序列方法(1)
- 如何在 asp.net 中使用 WMI 功能,创建web站点等
- 使用AJAX优化客户端——Iconix Pharmaceuticals使用AJAX和J2EE创建功能强大的瘦客户端的实践(译文)
- 在sqlldr中如何使用序列(sequence)
- 使用AJAX和J2EE创建功能强大的瘦客户端
- Oracle序列的(Sequence)使用
- Oracle序列的(Sequence)使用
- Oracle序列(sequence)创建失败,无法取值(.nextval),无法删除(drop)解决办法
- 在 Hibernate 中使用 oracle 的 sequence 产生主键实现 SQL Server 自增长字段功能
- Oracle 序列的创建和使用
- Oracle 创建自增字段的方法—使用序列方法