问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL2008 主键自增

发布网友 发布时间:2022-04-22 08:33

我来回答

3个回答

热心网友 时间:2022-04-11 17:12

我来给一个完整的方案:

--一个完整的生成流水号解决方案

--步骤1. 创建一张流水号表
--serialNumber是流水号表,每个type每个prefix只有一条记录,保存最新的流水号
create table serialNumber (
[type] varchar(20) not null
,[prefix] varchar(20) not null
,SN int not null
,constraint PK_serialNumber 
primary key ([type],[prefix])
);

--步骤2. 创建一个存储过程,根据指定的type和prefix获取最新的流水号
create procere proc_getSN(@type varchar(20),@prefix varchar(20),@sn int output)
as
begin
set transaction isolation level serializable;
begin tran
--更新流水号
update serialNumber set SN=SN+1 
where [type]=@type and [prefix]=@prefix;
if @@rowcount=0
begin
insert into serialNumber([type],[prefix],[SN]) 
values (@type,@prefix,1);
select @sn=1;--这里不要select from serialNumber了,否则会死锁
end
else
begin
select @sn=isnull(SN,0) from serialNumber 
where [type]=@type and [prefix]=@prefix;
end
commit;
set transaction isolation level read committed;
end

--步骤3. 创建商品表,测试用。
create table 商品表(
商品编号 int primary key
,类别号 int not null
)

--步骤4. 向商品表中插入数据
--其中类别号为1的话,商品编号为51+5位流水号
--类别号为2的话,商品编号为52+5位流水号
declare @sn int,@i int;
--插入5条类别为1的数据
set @i=0;
while (@i<5)
begin
--获取流水号
exec proc_getSN '商品','51',@sn output;
--插入数据
insert into [商品表]
select '51'+right('00000'+cast(@sn as varchar),5),'1';
set @i=@i+1;
end
--插入3条类别为2的数据
set @i=0;
while (@i<3)
begin
--获取流水号
exec proc_getSN '商品','52',@sn output;
--插入数据
insert into [商品表]
select '52'+right('00000'+cast(@sn as varchar),5),'2';
set @i=@i+1;
end

最终的结果:

serialNumber表:

商品表:

热心网友 时间:2022-04-11 18:30

你这个得用触发器了吧追问不管是触发器还是函数什么的,都可以,我就是想添加一条数据时能实现这样的功能可以么?

热心网友 时间:2022-04-11 20:05

想知道你这样做的意义
sql server 2008 数据表主键自增不连续

这类自增字段是不会去补被删除的记录对应的ID的,就是说系统里记录一个最大值,每次增加记录都在这个值上增长,这类值在应用中不要去考虑让其连续,因为要连续代价太大,相当于重建个表重新生成这个字段值。

SQL数据库的ID怎么设置为自增

以sqlserver2008R2数据库为例。可以用如下方法:1、先建表:create table test (id int not null,name varchar(10))2、在图形界面,找到test表:3、右键此表名,选择“设计”。4、右侧出现的页面,找到要设置主键的列,ID列,然后右键,选择“设置主键”。5、下面一步是要设置自增,在左侧列表中...

SQL Server 2008怎样添加自增列实现自增序号

一、通过T-SQL代码.alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL 这里用到了identity关键字:indentity(a,b),a b均为正整数,a表示开始数,b表示步长,indentity(1,1)就代表从1开始,每次增加1

sql server 2008中id如何设为自增

SQL Server 通过 IDENTITY 来设置 参数有2个,一个是“初始值” 一个是“增量”。默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。1&gt; CREATE TABLE test_create_tab2 (2&gt; id INT IDENTITY(1, 1) PRIMARY KEY,3&gt; val VARCHAR(10)4&gt; );5&gt; go 1&gt; INSERT INTO te...

SQL Server 2008怎样添加自增列实现自增序号

SQL 2008与以往版本的用法是一样的。--创建表时添加自增列,且从1开始create table 表名(id int identity(1,1) )--给已存在的表添加自增列,且从1001开始,也可以从1开始alter table 表名add id intidentity(1001,1)

怎样在sql中把主键值设成是自动加1

1、如果你用的是SQL Server数据库,在你设计库表时把Goods_ID字段的数据类型设置为Int,在下面的标识中选择“是”,在标识种子中输入“1”,在标识递增量中输入“1”。这样你的这个Goods_ID字段就可以自动增加1了。2、如果你用的是Access数据库,那才好设置呢,在表中的字段Goods_ID数据类型中选择“自动编号”。3...

sqlserver2008数据库已有数据,现要新增一列(或者修改现有列),使之数值...

加一个标识列,选成自增型的,但你现在不能已有标识列,如有了的把旧的删了。

怎样将ms sql的主键设置为每次自增加1

1.首先,待设置的字段类型一定要是int型的,否则不能设置“标识规范”。2.打开SQL Server,连接数据库,找到目标表,右键,然后点击“设计”。3.单击主键列(或其他需要设置的数据类型为int的列),然后在下方“列属性”中找到“标识规范”,展开。4.在(是标识)下拉栏中选择“是”,然后设置“标识...

sql 表的主键是自增序列,如何解决删除的id...

没有必要,不连续就不连续。干吗必要连续。ID本来就是作为数据的唯一标识用的,只要是唯一的就行,连不连续无所谓。因为如果连续的话,那么你每次删除数据都要进行ID重新排列,这样当数据较多时,会严重影响速度,所以大家都不这样作。

SQ数据库中怎样设置自增主键(sql设置主键自增)

自增列的类型应为int或bigint型,可以设置起始和每次递增数。如:createtable[table1]([id][int]identity(1,1)...)这样每次插入则不需要为主键设置参数,数据库会根据设置的递增条件,自动给出主键值。如以上代码所示,则第一次插入后主键为1,第二次为2,依次递增。需要注意的是:如果这个表中有...

mysql增加自增主键 mysql主键自增2 自增主键 mysql自增主键 mysql自增主键满了 mysql返回自增主键 数据库不是主键自增 mysql自增主键用完了怎么办 数据库自增主键可能的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么发送带图片朋友圈不折叠。 水草缸里水草容易长黑毛藻怎么破 婴儿哭会不会哭坏身体 德朗热综合征 红米note的sd卡卡槽在哪里 为什么要办组合贷款 组合贷款为什么不让贷 为什么新闻30天气预报不播菏泽 奇葩说第六季更新时间 奇葩说第六季开播时间 数据库如何设置主键(ID)自动增长啊(SQL语句)? window10家庭版投影到此电脑中的可选功能没有无线... sql更新语句 自增 SQL数据库的ID怎么设置为自增 台式机无法使用投影到此电脑,提示无法通过miracas... SQL数据库中约束为自动增长的语句是? 电脑原本可以miracast后来不行 无线显示器安装成功但电脑显示此设备不支持miracas... 三亚海胆事件陷入罗生门,目前事件的最新进展如何? 湖北人贩子事件陷罗生门,事件的背后暴露了哪些问题? 手机投影到电脑,电脑不支持Miracast,怎么办? 罗生门武士是怎么死的 《罗生门》:即使是谎言的世界,依然要相信人性光... 《罗生门》作为黑泽明的代表作,对后世导演的影响... 拼多多商家可以把消费者购买完的商品链接改掉吗? 罗生门事件的介绍 《我和僵尸有个约会》男主现在为什么会凄凉无戏拍? 罗生门事件最后怎么解决的 什么是罗生门事件? 拼多多店铺突然找不到商品链接也找不到,而且不能直... 我想用小米手机投屏到电脑上,但电脑不支持接受Mir... sql server 数据库的自动增长列 当你同意时,With电脑和手机可以投影到这台电脑”,... SQL数据库中使自增的数据类型 设备为啥不支持Miracast ?看看这种显卡支持吗 ? java往数据库sql中添加数据,怎么让主键自增 笔记本不支持miracast怎么用? T-SQL 修改数据库自动增长 SQL语句怎样实现自增字段初始化 请问 SQL数据库表自动增加是怎么回事? sql数据库如何设置两个自增列或者实现等同的效果 mssql数据库表自增长字段怎样重置 数据库的一个字段是自增的,那么业务层插入新记录... SQL server数据库中 添加多条数据时 如何让非自增... 衣物静电如何去除买了件衣服,面料是真丝 真丝衣物有静电怎么办 如何避免静电的产生 真丝衣物有静电怎么办 如何避免静电的产生? 如何去除真丝衣服的静电 丝绸起静电 新买的真丝连衣裙起静电了怎么办?