我要向一个表中插入数据,且这个表中的ID不是自动连续的,我插入的数据如何让其ID自动增长;
我写的SQL语句是:insertintoKQ_EmpLeaveselectID要自动增长,应如何写parentdeptid,1,startdate,enddate,sta...
我写的SQL语句是: insert into KQ_EmpLeave
select ID要自动增长,应如何写
parentdeptid,
1,
startdate,
enddate,
starttime,
endtime,
-- class,
null,
applydays,
pe.partautoid1,
pe.partautoid2,
pe.partautoid3,
pe.partautoid4,
pe.partautoid5,
pe.dutyname,
from OATOHR_QJD afq
inner join ps_employee pe
on afq.parentdeptid=pe.empno
KQ_EmpLeave 中的ID不是自动增长的,现其中已经有31685条数据 展开
select ID要自动增长,应如何写
parentdeptid,
1,
startdate,
enddate,
starttime,
endtime,
-- class,
null,
applydays,
pe.partautoid1,
pe.partautoid2,
pe.partautoid3,
pe.partautoid4,
pe.partautoid5,
pe.dutyname,
from OATOHR_QJD afq
inner join ps_employee pe
on afq.parentdeptid=pe.empno
KQ_EmpLeave 中的ID不是自动增长的,现其中已经有31685条数据 展开
5个回答
展开全部
自增列的类型应为int或bigint型。可以设置起始和每次递增数。
如:create table [table1]
(
[id] [int] identity(1,1)...
)
这样每次插入则不需要为主键设置参数,数据库会根据设置的递增条件,自动给出主键值。
如以上代码所示,则第一次插入后主键为1,第二次为2,一次递增。
需要注意的是:如果这个表中有10条数据,主键为1-10不间断的数字,那现在要删除第十条数据,
继续插入的话,id则会变成11,而不是10。通俗的说就是主键使用过一次将不会再次使用。
如:create table [table1]
(
[id] [int] identity(1,1)...
)
这样每次插入则不需要为主键设置参数,数据库会根据设置的递增条件,自动给出主键值。
如以上代码所示,则第一次插入后主键为1,第二次为2,一次递增。
需要注意的是:如果这个表中有10条数据,主键为1-10不间断的数字,那现在要删除第十条数据,
继续插入的话,id则会变成11,而不是10。通俗的说就是主键使用过一次将不会再次使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
declare @fid int
set @fid=(select max(id) from KQ_EmpLeave)--取得最大值
set @fid=@fid+1--最大值+1
再将这个@fid赋值给要插入的id即可
set @fid=(select max(id) from KQ_EmpLeave)--取得最大值
set @fid=@fid+1--最大值+1
再将这个@fid赋值给要插入的id即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么数据库?
如果是 SQL Server 2005 以上版本的话。
可以使用
select
31685 + ROW_NUMBER() OVER( order by ID)
来处理。
如果是 SQL Server 2005 以上版本的话。
可以使用
select
31685 + ROW_NUMBER() OVER( order by ID)
来处理。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
创建表时下面的属性有自动增长这一项,你选是行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-31
展开全部
每次求最大值,然后加一
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询