插入最大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
[解决办法]