Select & Update w jednym zapytaniu.

0

Witam.

Czy w MySQL da się to wykonać w jednym poleceniu.
Zwiększyć zawartość jednej komórki o jeden i pozyskać jej wartość jednocześnie.
Można to ponoć zrobić przy użyciu procedury mysql ale wolałbym z tego rozwiązanie nie korzystać.

UPDATE ini SET dane= (select dane + 1 ) WHERE name="NR-IDP"
SELECT dane from ini WHERE name="NR-IDP"

Znalazłem takie rozwiązanie w PostgreSQL a wygląda to tak

UPDATE tbl_user SET amount=amount-'$amount' WHERE id='$id' LIMIT 1 RETURNING amount

Pozdrawiam
Janusz.

0

Z tego co mi wiadomo, to nie da się w MySQL tego tak zrobić...
Ale t trochę bezsensowne jest - skoro wiesz, ile masz, to wiesz, ile będziesz miał, gdy to zwiększysz o jeden. Czyli po prosyu zamień kolejność działań - zwróć wartość, a zminisz wartość później.

0

Wielu użytkowników będzie zmieniało tą wartość i bardzo mi zależy na tym by ta wartość była rzetelnie zwiększa o jeden.
Dlatego potrzebuję to zrobić w jednym zapytaniu, by inny użytkownik nie pomieszał szyków.

0

Co to znaczy rzetelnie o 1? To nie wystarczy

Update t set dane=dane+1

0

wartość startowa 10

Zapytanie z pierwszego PC Udate
Zapytanie z drugiego PC Update
Zapytanie z pierwszego PC select
Zapytanie z drugiego PC select

odpowiedź dla obu select będzie 12

I mamy problem.
Serwer wykonuje polecenia w kolejności jak przychodzą. A jak nastąpi taka sytuacja to nie będzie rzetelnie, tylko do du................

0

No to może użyj transakcji w procedurze?

1 użytkowników online, w tym zalogowanych: 0, gości: 1