首页 新闻 会员 周边 捐助

一组数据前面不动,后面自增

0
悬赏园豆:10 [已解决问题] 解决于 2013-07-11 08:37

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,但是我感觉还是不对,请大家给个建议!谢谢!有类似这样的做法的朋友给个建议!谢谢!

梦魔问世的主页 梦魔问世 | 初学一级 | 园豆:3
提问于:2013-07-10 18:01
< >
分享
最佳答案
0

看不懂你说的东西?你数据库是不是有一列数据,前面是8位日期后面是5位自增长的数据啊?怎么会用数据库的自增长呢??

这个问题好像是列的自增长问题。

几种做法:

1、可以把这一列拆分成两列,一列是2013070500001,一列是1,插入下一条语句时,用insert into table1(...) select isnull(max(id),0)+1,col1,col2,如果考虑灵活,还可以把日期再单独列出来,这样不同日期,种子是从1开始;
2、将系统中所有增长的序号,记录到一张种子表,每次插入数据,取这个值加1,并更新种子表。

3、通过程序记录这个种子,比如写到xml文件中。(与2大同小异)

这些方法的好处就是数据处理比较方便,如果你用了数据库自增长字段,那么数据的迁移就很麻烦,多数据库的对应也不方便。

收获园豆:10
kylin.chen | 小虾三级 |园豆:983 | 2013-07-10 18:25

嗯,你的那种想法,我也到网上看过,但是我在弄的时候还是搞不来,最好不得不来问问了,再麻烦你点,详细点,给个代码最好了,有了代码可以学习下思路,刚学会有很多问题都不懂,只能从代码下手了!麻烦了,谢谢!

梦魔问世 | 园豆:3 (初学一级) | 2013-07-10 18:46

@梦魔问世: 

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 | 园豆:983 (小虾三级) | 2013-07-10 19:18

@梦魔问世: 下面这个插入语句可以执行多次,你就看到效果了

kylin.chen | 园豆:983 (小虾三级) | 2013-07-10 19:19

@kylin.chen: 好的!谢谢你耐心的解答,非常感谢!

梦魔问世 | 园豆:3 (初学一级) | 2013-07-11 08:37
其他回答(1)
0

做成联合主键 int pk1--> 20130705 , int pk2 identity(0001,1) --> 00001 primary key (pk1,pk2)

Eddiew | 园豆:286 (菜鸟二级) | 2013-07-10 18:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册