数据库字段自增~~~~~·进者有分
在SQL SERVER 2000中 如何使这样的ID C_0001 C_0002 C_0003 自增,当插入第四条记录的时候就是C_0004! 先谢谢大家!
------解决方案--------------------我来了。。。
------解决方案--------------------再继续接
------解决方案--------------------1
------解决方案--------------------up
------解决方案--------------------自己用程序或SQL函数去生成这样的自增结果,SQL自己不执行这样的自动增长!!!
------解决方案--------------------自增列后加一自定义ID列
建一触发器 插入后根据自增列值自动在ID列插入自定义值 如C_0003
------解决方案--------------------嗯。
SQL的自增种子都只能是int型的。这样的不支持。
------解决方案--------------------写个函数吧 在SQL里
------解决方案--------------------sqlserver里面自增长的类型只有一个整型才可以
------解决方案--------------------可不可以用一个自动增长列,数据在查询的时候自己组合?用sql或者后台程序都可以
------解决方案--------------------自动增长
------解决方案--------------------//*****在新增记录的时,取数据的最大记录,然后进行组合,即可.
------解决方案--------------------你果你不想手动的添加的话..应该要用到触发器!自己写个吧!!
------解决方案--------------------建议使用纵表的方式,可以加一个父id来解决问题!
------解决方案--------------------用触发器,对自动增长的记录,主键经过处理后在存入
------解决方案--------------------写个程序就可以了
然后调用,调用一次就增长一个,
用两个字段来实现
第一个字段char型第二个字段用int
这样就可以解决了。
------解决方案--------------------我来蹭点分
------解决方案--------------------同蹭同蹭:)
------解决方案--------------------这个问题我以前问过.经过研究一下明白原理就好做了
工厂流水号的生成
1.用SQL函数生成自动流水号.
流水号格式为: 'R '+日期年后二位+二位数月+ '- '+二位数日期+自动编号
R0708-2001
R0708-2002
R0708-2003
自定义函数如下:
注:CaiGouInfo为采购单表,CGID为采购单自动流水号
CREATE function new_idr(@a datetime) returns varchar(50)
begin
---id为日期格式部分
declare @id varchar(50),@i int
select top 1 @id=CGID from CaiGouInfo where left(CGID,8)= 'R '+(left(convert(varchar(6),@a,12),4)+ '- '+right(convert(varchar(6),@a,12),2)) order by CGID desc
--如果没找到该日期的流水号,则新增加一个流水号,即为当天的第一个流水号
if @@rowcount=0
return 'R '+(left(convert(varchar(6),@a,12),4)+ '- '+right(convert(varchar(6),@a,12),2))+ '01 '
--如果存在该日期的流水号则在该流水的后二位自动编号上加1
set @i= rtrim(right(@id,2)) +1
set @id=rtrim(@i)
--转化流水号后二位为2位字符串
return 'R '+(left(convert(varchar(6),@a,12),4)+ '- '+right(convert(varchar(6),@a,12),2))+right( '00 '+@id ,2 )
end
调用
在数据表里的流水号字段写个默认值,则应该字段为自动流水号
default ([dbo].[new_idr](getdate()))
2.C#代码生成
因为除自动编号为的键值是不确定的.不像日期格式是确定的6位.所以SQL 自动生成流水号比较麻烦.采用C#编码生成.
注:BJID是自动生成的报价单号,CustomerProRes是客户产品资料表
//报价单为客户代码+物料名称+自动编号,自动编号自动增长
string BJID =CustomerCode+WLName;