日期:2014-05-18  浏览次数:20409 次

我有一列是自增长ID,
我有一列是自增长ID,能不能在插入数据时,比如插入第一条数据自增长ID肯定是“1”,能不能再同时插入一列如“1.txt”这列是根据ID号命名的。

------解决方案--------------------
不太明白 你是想让一列中的数据1.txt和自增加长列保持一致?
那只能添加数据后再获取ID值,用这个ID值再更新那列。因为列增加不一定都是每次添加都是最大值加1
------解决方案--------------------
当然可以了!不过你得处理一下,因为别一个字段是不会自动获取ID号的!你要在插入数据之前从数据库中查出当前最大ID然后插入时用ID+1就可以了!如直接插入str变量(dim str as string
str=cstr(id+1)& ".txt ")
------解决方案--------------------
最好的办法就是用公式
------解决方案--------------------
insert into table(name)values(CONVERT(varchar(10),@@IDENTITY) + '.txt ')
------解决方案--------------------
wangyanyan(不犯错误,一定会错,因为不犯错误的人一定没有去尝试。) ( ) 信誉:96 Blog 加为好友
楼上方法不可取,比如说我现在有三条记录应该是1,2,3可以把第三条记录删除了,那么我取出来的值是2,再加1也就是3,可实际值是4

那取那一列自增长的最大值不就可以吗?


------解决方案--------------------
给这个表做个触发器 for insert。
在触发器里写
update tb set 列=cast(@@identity as varchar)+ '.txt ' where id=@@identity

@@identity是系统变量,数据是表修改或是插入的最后一行的主健id号。。
------解决方案--------------------
那取那一列自增长的最大值不就可以吗?
-----------------
sequence是db系统控制的...

如果是oracle可以用 <sequencename> .nextval获取...sql server就不行...

sql server可以用楼上的trigger...oracle不支持自增长...也得用trigger...

------解决方案--------------------
我觉得如果要实现楼主的功能,还不如只在另外的地方只存储其他相关数据,等需要的时候再使用组合把他选出来了


例如 ID是自动增长的, FExt里面存储文件的其他信息,等需要文件名的时候直接
select ltrim(rtrim(convert(char, id))) + FExt as FileName from 表名;

这样的话编程似乎会简单很多。