Bonjour, j'aimerai savoir comment attribuer la valeur max à un champ, en ne faisant qu'un seul update (si c'est possible)

Exemple :

create table #temp
(
Cptr int
)


insert into #temp
(
Cptr
)
values
(
0
)

insert into #temp
(
Cptr
)
values
(
0
)

insert into #temp
(
Cptr
)
values
(
1
)

select
*
from
#temp

update
tmp
set
tmp.Cptr = (select max(Cptr) + 1 from #temp )
from
#temp tmp
where
Cptr = 0

select
*
from
#temp

drop table #temp

Et j'obtiens :


(1 ligne(s) affectée(s))


(1 ligne(s) affectée(s))


(1 ligne(s) affectée(s))

Cptr
-----------
0
0
1

(3 ligne(s) affectée(s))


(2 ligne(s) affectée(s))

Cptr
-----------
2
2
1

(3 ligne(s) affectée(s))


or je voudrais obtenir à la fin :

Cptr
--------------
2
3
1

Je pourrai le faire avec une boucle ou autre, mais comment le faire en une seule instruction ?

Merci.