首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

插入最大id的累加,该怎么处理

2012-04-21 
插入最大id的累加要是一个数据表,它的主键id没有设置IDENTITY,在不再修改设置的IDENTITY的情况下,我就用ma

插入最大id的累加
要是一个数据表,它的主键id没有设置IDENTITY,在不再修改设置的IDENTITY的情况下,
我就用max来获取最大id,但我写的这条sql,只能获取一次最大的id

SQL code
insert into tb_Card(CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate) select (select MAX(CardID) from tb_Card) as CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate from tb_Card where CardID in(5,6,7)

在不改变这条sql结构的情况下,能实现CardID最大值的累加吗??
谢谢

[解决办法]
05么

试试

select (select MAX(CardID) from tb_Card)+row_number() over (order by getdate()) as CardID
[解决办法]
你的语句有问题,
select (select MAX(CardID) from tb_Card) as CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate 
from tb_Card where CardID in(5,6,7)


那你取到的三条记录的 cardid都是相同的,如果cardid是主键,会报错的。
你没有验证你的语句到底对不对么?
后面跟贴的也没看出来么?

你可以做一个最大号表,然后从最大号表里要最大值,

[解决办法]
1楼的方法应该可行
[解决办法]
insert into tb_Card(CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate) 
select (select MAX(CardID)+1 from tb_Card) as CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate 
from tb_Card where CardID in(5,6,7)

[解决办法]
1楼的思路是完全正确的
但是真的应用的话,不建议你这样做
应为有考虑多个用户同时实行这个SQL的问题
会造成别的用户数据插入失败,IDENTITY真的不想用的话
建议你做一个专门用来生成ID的模块,管理各种需要自动生成的
ID
[解决办法]
探讨
insert into tb_Card(CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate)
select (select MAX(CardID)+1 from tb_Card) as CardID, UserID,ModuleID,CardName,CardContent,CardIsPride,CardDate……

热点排行