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...