Jak powinna wyglądać komenda update aby w tabeli posiadającej już kilkadziesiąt rekordów do danej kolumny (np. int) od razu wprowadzić dla np. 20 rekordów (spełniających jakiś warunek WHERE) rosnące, kolejne wartości (1,2,3,4,5 .....)?
- stored proc to załatwi (bez licznika może być ciężko)
- nigdy po stronie bazy nie powinieneś trzymać czegoś takiego jak liczba porządkowa
Czy masz na myśli stored procedure:
http://pl.wikipedia.org/wiki/Procedura_sk%C5%82adowana
?
Jeżeli tak to będę musiał w tym podłubać bo nie znam tematu zupełnie.
Jeżeli można to zrobić przez jakąś dodatkowa tabelę z polem licznika to ok. tylko i tak nie wiem jak wywołać samopowtarzajacą się komendę (jak pętla "for") przechodzącą przez wybrane rekordy sczytującą licznik, wypełniajacą odpowiednią kolumnę i powiększającą licznik.
tak chodziło mi o stored procedure. Jednak będzie to wolne bo jeśli będziesz chciał zmienić 1000 rekordów to trzeba będzie 1000 razy wywołać update. Jak już pisałem taka kolumna w bazie to same problemy i nie robi się tego w ten sposób
A może po prostu tak:
set @i=0;
UPDATE table_name SET pos_field_name= (@i:=@i+1) WHERE condition_field_name=2;
Dzięki Michał za ten kod.
Być może rozwiąże to sprawę. Przetestuję to jutro jak będę miał dostęp do mojej bazy. Jak będzie działało to super bo kolejny problem z głowy : )
Może użyć po prostu sortowania i rownum