MYSQL - Условная запись в несколько таблиц с использованием предложения NOT EXISTS в одной транзакции - PullRequest
1 голос
/ 22 января 2020

У меня есть 2 таблицы, которые мне нужно записать в одной транзакции на основе условия NOT EXISTS.

Таблица A - a (pk) b c

Таблица B - x (pk) yz

SET autocommit = OFF;
START TRANSACTION;

**// STEP 1**
INSERT INTO A (b,c)
SELECT r.* FROM
(SELECT 'b' br, 'c' cr FROM dual) r
WHERE 
NOT EXISTS 
(select 1 from A where c = cr);

**// STEP 2**
INSERT INTO B (y,z)
SELECT r.* FROM
(SELECT 'y' yr, 'z' zr FROM dual) r
WHERE 
NOT EXISTS 
(select 1 from A where c = zr);

**// STEP 3**
COMMIT;

Как я могу гарантировать, что после STEP2, но до STEP3 (commit), не будет никаких новых вставок в A, которые могут привести к нарушению условной записи в STEP1 и STEP2 .

...