Komenda updejstująca zestaw pól rosnącymi wartościami

Komenda updejstująca zestaw pól rosnącymi wartościami
  • Rejestracja: dni
  • Ostatnio: dni
0

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 .....)?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1
  1. stored proc to załatwi (bez licznika może być ciężko)
  2. nigdy po stronie bazy nie powinieneś trzymać czegoś takiego jak liczba porządkowa
  • Rejestracja: dni
  • Ostatnio: dni
0

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.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

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

mszewcz
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 31
0

A może po prostu tak:

Kopiuj
set @i=0;
UPDATE table_name SET pos_field_name= (@i:=@i+1) WHERE condition_field_name=2;
  • Rejestracja: dni
  • Ostatnio: dni
0

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 : )

P0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

Może użyć po prostu sortowania i rownum

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.