Autor | Zpráva | ||
---|---|---|---|
MaK Profil |
#1 · Zasláno: 28. 1. 2015, 09:55:44
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 |
#2 · Zasláno: 28. 1. 2015, 12:18:59
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 |
#3 · Zasláno: 28. 1. 2015, 12:29:53
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 |
#4 · Zasláno: 28. 1. 2015, 14:34:28
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). |
||
Časová prodleva: 10 let
|
0