首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

设计主键解决方法

2013-07-16 
设计主键你好需要设计订单表的主键,要求是年月日+(每新单自增1)例如 201307081 201307082,identity(getdat

设计主键
你好
需要设计订单表的主键,要求是年月日+(每新单自增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
*/

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

热点排行