问答文章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

想知道你这样做的意义
SQ数据库中怎样设置自增主键?

1、打开数据库客户端,点击连接上你的数据库。2、在对应的库上,点击展开表视图。3、右键点击要设置的表,点击‘表设计’。4、打开表设计页面,点击选中主键字段。5、点击后,在下方就会出现这个字段的设置,点击勾选上‘...

SQL2008 主键自增

--一个完整的生成流水号解决方案--步骤1.创建一张流水号表--serialNumber是流水号表,每个type每个prefix只有一条记录,保存最新的流水号createtableserialNumber([type]varchar(20)notnull,[prefix]varchar(20)not...

sql server中如何实现自增字段?

1、主键自增,以及建表的语句如下:CREATETABLEIFNOTEXISTS`t_email_notice`(`id`INT(11)UNSIGNEDNOTNULLAUTO_INCREMENT,`send_time`INT(16)NOTNULLDEFAULT'0',PRIMARYKEY(`id`))ENGINE=I...

数据库如何设置主键(ID)自动增长啊(SQL语句)?

在创建表的时候可以设置,方法如下,用一下sql语句。createtabletableName(idintidentity(1,1)primarykey,datavarchar(50))解释:其中identity(1,1)代表自增,第一个1代表从1开始计数,第二个1代表每次增长1。

sql server怎么设置主键自增长

打开SQLServer,连接数据库,找到目标表,右键,然后点击“设计”。单击主键列(或其他需要设置的数据类型为int的列),然后在下方“列属性”中找到“标识规范”,展开。在(是标识)下拉栏中选择“是”,然后设置“标识增量...

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

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

怎么用SQL语句CREATE TABLE的主键为“自动增加”

自动递增:AUTO_INCREMENT例子:主键自增:CREATETABLEtest(idINTUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(15)NOTNULL)AUTO_INCREMENT=100;上面的test表,主键id为自动递增的...

sql server 2008 建表主键自增列时为啥不能保存

应该是你设置错误,没见过谁遇到这个问题

sql数据库2008 不是主键字段 我想让它自增怎么设置

语句创建createtabletablename(idintidentity(1,1),其他字段)

sql server 2008中id如何设为自增

SQLServer通过IDENTITY来设置参数有2个,一个是“初始值”一个是“增量”。默认情况下INSERT语句中,不能对IDENTITY的字段进行赋值。1>CREATETABLEtest_create_tab2(2>idINTIDENTITY(1,1...

mysql增加自增主键mysql主键自增2自增主键mysql自增主键mysql自增主键满了mysql返回自增主键数据库不是主键自增mysql自增主键用完了怎么办数据库自增主键可能的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
g903一直显示正在加载资源 舞蹈是什么形式? 11月或者12月包头到阿尔山游玩5天大概得多少钱?主要是泡温泉和滑雪... 11月中旬去阿尔山车没有雪地胎行吗 传祺天窗复位恢复方法如下 看到一个妹子的QQ头像 我该怎么吐槽。 孙海的人物生平 苹果手机用什么位置刷公交卡 黄楠森的人物生平 小说《金屋藏帅》电子书txt全集下载 数据库如何设置主键(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数据库中 添加多条数据时 如何让非自增... 衣物静电如何去除买了件衣服,面料是真丝 真丝衣物有静电怎么办 如何避免静电的产生 真丝衣物有静电怎么办 如何避免静电的产生? 如何去除真丝衣服的静电 丝绸起静电 新买的真丝连衣裙起静电了怎么办?