cuId int identity(201307050001,1) primary key
请问怎么写一个方法保证前面20130705不动?界面我需要显示的是20130705 而后面的00001不显示,并且在添加的时候要自增,之前我弄了一个方法
public void Show()
{
string sql = "select top 1 productId from product";
var str11 = sql.Substring(0,5);
}
这样保证了显示的时候不出现0001,但是我感觉还是不对,请大家给个建议!谢谢!有类似这样的做法的朋友给个建议!谢谢!
看不懂你说的东西?你数据库是不是有一列数据,前面是8位日期后面是5位自增长的数据啊?怎么会用数据库的自增长呢??
这个问题好像是列的自增长问题。
几种做法:
1、可以把这一列拆分成两列,一列是2013070500001,一列是1,插入下一条语句时,用insert into table1(...) select isnull(max(id),0)+1,col1,col2,如果考虑灵活,还可以把日期再单独列出来,这样不同日期,种子是从1开始;
2、将系统中所有增长的序号,记录到一张种子表,每次插入数据,取这个值加1,并更新种子表。
3、通过程序记录这个种子,比如写到xml文件中。(与2大同小异)
这些方法的好处就是数据处理比较方便,如果你用了数据库自增长字段,那么数据的迁移就很麻烦,多数据库的对应也不方便。
嗯,你的那种想法,我也到网上看过,但是我在弄的时候还是搞不来,最好不得不来问问了,再麻烦你点,详细点,给个代码最好了,有了代码可以学习下思路,刚学会有很多问题都不懂,只能从代码下手了!麻烦了,谢谢!
@梦魔问世:
1、首先创建表
create table Table1(
cd char(13),
id int,
Name Nvarchar(100)
);
2、插入数据
insert into Table1
select
'20130705' + substring(cast((isnull(MAX(id),0) + 1)+100000 as varchar(6)),2,5) as cd,
isnull(MAX(id),0)+1 as id,
'张三' as Name
from Table1
@梦魔问世: 下面这个插入语句可以执行多次,你就看到效果了
@kylin.chen: 好的!谢谢你耐心的解答,非常感谢!
做成联合主键 int pk1--> 20130705 , int pk2 identity(0001,1) --> 00001 primary key (pk1,pk2)