Autor Zpráva
MaK
Profil
Mám MySQL a dva sessiony. V prvním po sobě jdou tyto dva dotazy:

INSERT INTO table1 ...
CREATE TABLE table2 ...

V druhém sessionu zjišťuju, zda byly dotazy v prvním sessionu provedeny.

Může se stát, že ve druhém sessionu zjistím, že druhý dotaz předehnal první dotaz?

Neboli zjistím, že table2 je vytvořena, ale řádek ještě nebyl vložen.

MaK
Keeehi
Profil
Začneme upozorněním Některé časteji řešené dotazy pro MySQL - FAQ » Nová tabulka/sloupec pro každý záznam

Mám silné podezření že řešíte problém, který by neexistoval pokud byste měl správný návrh. Proto prosím o popis struktury vaší databáze a co za nové tabulky se tvoří. Protože celé řešení může být v lehké restrukturalizaci místo řešení asynchronních požadavků a zajištění atomicity operací což je o několik řádů složitější.
Kajman
Profil
MaK:

Create table patří do příkazů, na které není možné v rámci transakce použít roolback. Nejsem si jistý (nemám čas to ověřit), ale pokud transakce s těmi dvěma příkazy nebude commitnutná, tak druhý proces uvidí vytvořenou tabulku, ale neuvidí řádek.
MaK
Profil
Keeehi
Mám silné podezření že řešíte problém, který by neexistoval pokud byste měl správný návrh.
Neřeším problém. Jen se ptám, zda k takové situaci může/nemůže dojít.
Na druhou stranu máte pravdu, že se tato otázka vynořila při hledání, jak řešit atomicitu dotazů INSERT+CREATE.

Kajman:
Po každém dotazu je proveden autocommit, navíc CREATE TABLE způsobí commit (oboje vlastnost MySQL).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: