读书人

设计主键解决方法

发布时间: 2013-07-16 22:38:05 作者: rapoo

设计主键
你好
需要设计订单表的主键,要求是年月日+(每新单自增1)
例如 201307081 201307082,
identity(getdate(),1),这种方式可行吗?
[解决办法]
生成订单编号,可以使用一个存储过程返回,然后在这个字段上建立key,这个逻辑不是identity(getdate(),1)能够实现的,需要写一个Store procedure ,生成返回字符串。

[解决办法]
这个不是主键设计,而是主键值的问题,这个依靠sql代码去控制
[解决办法]


create table t
(
id int identity(1,1) primary key,
OrderId as replace(convert(varchar(10),getdate(),120),'-','')+right('00000000'+ltrim(id),8),
Others varchar(20)
)
go
insert t(Others)
select 'a' union all
select 'b' union all
select 'c'
go

select * from t

drop table t
/*
idOrderIdOthers
--------------------------------
12013070800000001a
22013070800000002b
32013070800000003c
*/

[解决办法]
如果多并发,最好还是通过一个存储过程来进行控制。

读书人网 >SQL Server

热点推荐