[ Príspevkov: 7 ] 
AutorSpráva
Offline

Skúsený užívateľ
Skúsený užívateľ
jednoduchá transakcia mysql

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
NapísalOffline : 22.10.2008 12:33 | jednoduchá transakcia mysql

Zdravíčko

Nemám zatiaľ žiadne praktické skúsenosti s transakciami.
Potreboval by som spraviť SELECT a hneď za tým update alebo delete (to je jedno). Ten istý skript bude bežať v niekoľkých procesoch pod rovnakým db userom.
Potrebujem zabezpečiť to, aby sa náhodou nestalo, že si dvaja zoberú z tabulky ten istý riadok.
Bude stačiť ak dám
Kód:
START TRANSACTION;
SELECT nieco FROM tabulka LIMIT 1;
DELETE FROM tabulka WHERE nieco=nieco_zo_selectu;
COMMIT;
?
Engine mám na tú tabuľku InnoDB.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.10.07
Prihlásený: 02.09.09
Príspevky: 7
Témy: 0 | 0
NapísalOffline : 22.10.2008 13:04 | jednoduchá transakcia mysql

ty skôr potrebuješ uzamykanie, transakcie na toto neslúžia..

http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

každopádne by si asi uzamknutie tabuľky tabulka pre čítanie ani nepotreboval, pretože ten delete môžeš spraviť aj subselectom..


Offline

Skúsený užívateľ
Skúsený užívateľ
jednoduchá transakcia mysql

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
Napísal autor témyOffline : 22.10.2008 13:13 | jednoduchá transakcia mysql

aha... a keď uzamknem tabulku a v tom čase sa bude snažiť dostať "druhý skript" k tej tabulke, vráti chybu alebo čaká?


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.10.07
Prihlásený: 02.09.09
Príspevky: 7
Témy: 0 | 0
NapísalOffline : 22.10.2008 13:19 | jednoduchá transakcia mysql

počká.. teraz ma napadlo, že ten subselect ani nepôjde (vzhľadom na to, že nemôžeš čítať tabuľku, nad ktorou sa takéto operácie vykonávajú)..

//som si na začiatku nevšimol, že robíš nad jednou tabuľkou :) uzamykanie ani nepotrebuješ, stačí keď ten delete/update vykonáš normálne..


Offline

Skúsený užívateľ
Skúsený užívateľ
jednoduchá transakcia mysql

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
Napísal autor témyOffline : 22.10.2008 13:52 | jednoduchá transakcia mysql

práveže niečo na to potrebujem, pretože keď pôjdu tie skripty súbežne, môže sa stať, že bude priebeh z pohladu databázy takýto:
skript1 - SELECT id FROM tabulka LIMIT 1 // vrati 1
skript2 - SELECT id FROM tabulka LIMIT 1 // vrati 1
skript1 - DELETE FROM tabulka WHERE id=1
skript2 - DELETE FROM tabulka WHERE id=1

Ideálne by bolo, keby to išlo
skript1 - SELECT id FROM tabulka LIMIT 1 // vrati 1
skript1 - DELETE FROM tabulka WHERE id=1
skript2 - SELECT id FROM tabulka LIMIT 1 // vrati 2
skript2 - DELETE FROM tabulka WHERE id=2
ale to by som sa musel spoliehať na náhodu


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.10.07
Prihlásený: 02.09.09
Príspevky: 7
Témy: 0 | 0
NapísalOffline : 22.10.2008 13:56 | jednoduchá transakcia mysql

ale nerozumiem prečo z tej tabuľky niečo načítaš a potom podľa toho z nej mažeš? prečo nespravíš rovno delete from tabulka where id = ?..


Offline

Skúsený užívateľ
Skúsený užívateľ
jednoduchá transakcia mysql

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96 | 96
Napísal autor témyOffline : 22.10.2008 14:03 | jednoduchá transakcia mysql

To je taká ako keby temporary table. Tam si načítam nejaké údaje a postupne ich spracovávam, robím kadejaké hovadinky s tým a tak. Každý riadok potrebujem spracovať iba raz. Všetko by bolo v pohode, nič také by som nepotreboval, keby som to nemusel ešte rozdeľovať na rôzne procesy, možno aj rôzne servery...


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
 [ Príspevkov: 7 ] 


jednoduchá transakcia mysql



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

jdbc transakcia

v Databázy

0

698

29.03.2009 14:48

tlacitko Enter

V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha kalkulacka

v Backend

6

1591

17.01.2012 15:33

vychytraly

V tomto fóre nie sú ďalšie neprečítané témy.

jednoduchá zostava

v Kôš

1

55

05.04.2020 18:19

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá stránka

v Hosting, servery a domény

7

665

06.05.2014 14:09

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha funkcia

v Backend

7

793

26.12.2007 13:42

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha galeria

v Ostatné

1

588

09.02.2010 14:17

don jebot

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha otazka....

v nVidia grafické karty

18

1287

05.05.2008 17:08

luboxxx

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha vyhybka

v Zvuk

3

2485

12.01.2010 20:30

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

jednoducha 2d animacia

v Grafické programy

5

689

24.07.2011 16:06

svejk

V tomto fóre nie sú ďalšie neprečítané témy.

ajax jednoducha funkcia

v Frontend

7

616

24.04.2010 20:20

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá úprava videa

v Video programy

29

1310

02.05.2015 13:16

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

python - jednoduchá úloha

v Backend

5

1096

08.06.2020 14:50

ux

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoduchá hashovacia funkcia

v Frontend

3

494

20.09.2014 20:27

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha ochrana systemu

v Antivírusy a ochrana

7

779

31.07.2008 19:12

dedko45

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha stranka na vypocet

v Ostatné

11

1003

01.06.2011 6:39

borisko27

V tomto fóre nie sú ďalšie neprečítané témy.

Jednoducha MVC aplikacia PHP

v Ponuka a dopyt práce

0

495

12.12.2014 17:42

peter902



© 2005 - 2026 PCforum, edited by JanoF