Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une erreur de clé en double MySQL provoque un verrouillage partagé défini sur l'enregistrement d'index en double ?

.1. Il nécessite un verrou sur l'entrée existante afin que les tentatives ultérieures d'insertion d'un enregistrement en double échouent systématiquement :

-- 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. Oui, et oui :