数据库中的ID字段设置为 char 类型
因为想给ID特殊的格式 比如说 030001这种,但是在添加的时候,怎么让它自己+1?
我的一个想法是 先查询数据库中最大的ID号,这就要求,ID号可以比较大小,char类型的ID号怎么比较大小?
或者各位大大有其他较好的解决方法?
急求!
char类型肯定不能自增的,但是是可以比较大小的,
所以就可以在入库之前做处理,
你可以试试用触发器,
先找到最大的ID,然后加1,然后再和其他列的数据一起insert进去,
需要注意的是如果是多个客户端,或是多线程调用的话,需要加锁
我这个是定长的流水号,供你参考,组成:一位方向+两位年+三位项目+三位流水号
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;
建议使用自动递增列,格式是可以想办法解决的。
默认情况:ID设为Int型,设置标识符规范,定义为是,可以指定自增大小
自定义情况:通过触发器实现