SELECTIDENT_CURRENT('TableName')--返回当前的最后自动编号SELECTIDENT_INCR('TableName')--返回增量值SELECTIDENT_SEED('TableName')--返回种子值返回下一个自动编号:SELECTIDENT_CURRENT('TableName')+(SELECTIDENT_INCR('TableName'))--创建数据库和表createdatabaseMyDataBaseuseMyDataBasecreatetablemytable(idintidentity(1,1),namevarchar(20))--执行这个SQL,就能查出来刚插入记录对应的自增列的值insertintomytablevalues('李四')select@@identitydeclare@new_idintinsertintotest_idvalues('haha')
成都创新互联公司企业建站,十余年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于网站制作、做网站中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
这种字符型的需要自动增长的主键是不能直接设置的,你可以通过结合代码来实现:
设置ADMMA表PID字段为主键,int类型,自动增长;MA00001这些数据存在另一个固定长度的字符串字段RealID中。
插入数据时先插入一条获取到PID,根据PID用正则表达式生成RealID,再更新该条数据的RealID值。
还有一种方式可以尝试,我不太确定能不能直接用,就是RealID做成计算列,该列的值直接通过PID换算得来。
直接添加就可以了,用设计器或者语句,前面的所有的列都会添加上编号
--添加C列从100开始自增每次+1
alter table test4 add c int identity(100,1) not null
需要注意的是,如果表没有主键,则会按照堆的顺序来进行编号,如果有主键则会按照主键的顺序来进行编号。建议对堆表先建立PK后再添加自增列,避免后期自增的顺序不一致
publicstaticintCreateTaskID(){TimeSpana=DateTime.Now.Subtract(newDateTime(2008,1,1,0,0,0));returna.Days*86400+a.Hours*3600+a.Minutes*60+a.Seconds;}
不知道下面是不是你想要的结果,
举个例子而言,你要查询表A中第31到40记录,ID自动增长,可能是不连续的。
select * from A where ID=31 and ID=40
或者是
select top 10 from (select top 40 * from A order by ID) order by ID desc
或者是
select top 10 from A where ID not in (select ID from top 30 from A)
如果有问题可以HI我。也可以追问