1.编写lua脚本用于生成主键ID序列号,内容如下 local key = tostring(KEYS[1]); local count = tonumber(KEYS[2]); local dateStr = tostring(KEYS[3]); local newKey = key .. "_" .. dateStr; local numRedis = redis.call("incr", newKey); print(numRedis); if (numRed…
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate)  output  inserted.id  values (getdate()) output 是sql server2005的新特性,可以从数据修改语句中返回输出,可以看作是“返回结果的DML” 2005之后 Insert,De…
使用强类型的DataSet可以方便的操作数据库:有时候我们会对表的ID设置为自动增长,并且需要在插入数据后获取新插入数据的ID,按以下方法即可达到目的: 一.     首先建立一个表,id为自动增加,设置为主键 二.     建立DataSet,添加TableAdapter 1.  选择向导,"使用SQL语句" 2.  点"高级选项",在弹出的对话框中勾选"刷新数据表" 3.  填入SQL查询语句 4.  下一步,选择"创建方法以将更新…
在项目开发中,遇到一个问题,先添加一条记录然后想立刻获取这条记录的ID值,ID由SQLServer自动增长的,如果先插入再查询的话,需要另外执行一条查询ID的SQL语句,因此有了下面的方法: 1.使用SQLServer自带的identity功能: sql="insert into dbo.OBDCustomer values(?,?,?,?,?,?) select @@IDENTITY as ID"; 2.要执行这条语句,应该是查询,而不是更新,因此需要调用executeQuery()…
在开发的过程中,我们经常会遇到要生成一些固定格式字符串,例如“BX201903150001”,结构为:BX+日期+N位序号,类似这种的字符串我们很难生成,在这里我们借助一个存储过程来实现这个功能. 1.创建表 该表用来存放我们要生成的字符串的规则和特性. CREATE TABLE [dbo].[SYS_TableNO] ( , ), ) COLLATE Chinese_PRC_CI_AS NOT NULL, ) COLLATE Chinese_PRC_CI_AS NULL, ) COLLATE…
答:解1:  select top 10 * from A where id not in (select top 30 id from A) 解2:  select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 首先就拿解1来select top 10 * from A表示取出前十条的数据 select top 30 id from A表示取出前30条的数据 现是取出大于30条的数…
select top 10 * from (select ROW_NUMBER() over(order by Id) as rows,* from Customer) as C where C.rows>30 order by Id select top 10 * from Customer where id not in(select top 30 Id from Customer order by Id)order by Id select top 10 * from Customer w…
SQL> create table scott.t1 (id number, val varchar2(8)); Table created. SQL> CREATE SEQUENCE scott.t1_id_seq INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE ; Sequence created. SQL> create or replace trigger scott.t1_id_trigger 2 before insert on…
项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001. 实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储: 业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步: 编码前置0,使用String.format("%05d", newNum);格式化获取. 实现代码如下: private final static AtomicInteger atomic = ne…
一,为什么需要生成唯一id(发号器)? 1,在分布式和微服务系统中, 生成唯一id相对困难, 常用的方式: uuid不具备可读性,作为主键存储时性能也不够好, mysql的主键,在分库时使用不够方便,高并发时性能没有保障 所以在这里我们演示使用redis+lua生成唯一id 2,使用redis性能虽好,但仍然要考虑单点故障问题, 这里建议在生产环境中使用主从+哨兵或集群方式 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectfor…