Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Doppelschlüsselfehler verursacht eine gemeinsame Sperre für den doppelten Indexdatensatz?

.1. Es erfordert eine Sperre für den vorhandenen Eintrag, damit nachfolgende Versuche, einen doppelten Datensatz einzufügen, konsistent fehlschlagen:

-- Transaction A
BEGIN TRANSACTION;
INSERT INTO mytable VALUE(1); -- fails as "duplicate"

-- Transaction B
BEGIN;
DELETE FROM mytable WHERE field = 1; -- must be put on hold, see below

-- Transaction A
-- transaction is still in progress
INSERT INTO mytable VALUE(1); -- must fail to stay consistent with the previous attempt

.2. Ja, und ja :