首页 新闻 会员 周边 捐助

数据库ID字段问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-15 08:58

数据库中的ID字段设置为 char 类型

因为想给ID特殊的格式 比如说 030001这种,但是在添加的时候,怎么让它自己+1?

我的一个想法是 先查询数据库中最大的ID号,这就要求,ID号可以比较大小,char类型的ID号怎么比较大小?

或者各位大大有其他较好的解决方法?

急求!

侠梦千年的主页 侠梦千年 | 初学一级 | 园豆:6
提问于:2013-03-11 18:00
< >
分享
最佳答案
0

char类型肯定不能自增的,但是是可以比较大小的,

所以就可以在入库之前做处理,

你可以试试用触发器,

先找到最大的ID,然后加1,然后再和其他列的数据一起insert进去,

需要注意的是如果是多个客户端,或是多线程调用的话,需要加锁

收获园豆:5
只会造轮子 | 老鸟四级 |园豆:2274 | 2013-03-11 18:12
其他回答(3)
0

我这个是定长的流水号,供你参考,组成:一位方向+两位年+三位项目+三位流水号

  string SerialNumber = string.Empty, tempbianhao = "000000000";
            string sql = "select max(OrderNumber) from SteelBusinessOrder where OrderDirection=@OrderDirection and ProjectID=@ProjectID and pyear=CONVERT(char(4), GETDATE(), 112);";
            SqlParameter[] para = new SqlParameter[]
    {
     new SqlParameter("@ProjectID",SqlDbType.Int,4),    
     new SqlParameter("@OrderDirection",SqlDbType.Int,4),     
    };
            int i = 0;
            para[i++].Value = ProjectID;
            para[i++].Value = OrderDirection;
            object o = DbHelperSQL.GetSingle(sql, para);
            tempbianhao = o == null ? tempbianhao : o.ToString();
            SerialNumber = string.Format("{0}{1}{2}{3}", OrderDirection.ToString(), DateTime.Now.ToString("yy"), string.Format("{0:D3}", projectID), string.Format("{0:D3}", Convert.ToInt32(tempbianhao.Substring(6)) + 1));
            return SerialNumber;

happydaily | 园豆:260 (菜鸟二级) | 2013-03-11 18:15
0

建议使用自动递增列,格式是可以想办法解决的。

陈希章 | 园豆:2538 (老鸟四级) | 2013-03-11 19:01
0

默认情况:ID设为Int型,设置标识符规范,定义为是,可以指定自增大小

自定义情况:通过触发器实现

伏草惟存 | 园豆:1420 (小虾三级) | 2013-03-11 19:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册