-- Einzeiliger Mutex fuer die Audit-Hash-Kette (Pentest R166-01). -- -- Vorher wurde ueber GET_LOCK serialisiert. Dessen RELEASE_LOCK muss auf -- derselben Verbindung laufen und stand daher im finally INNERHALB des -- Transaktions-Callbacks - also VOR dem COMMIT. In diesem Fenster konnte der -- naechste Schreiber die Sperre holen und das Kettenende lesen, bevor die -- Vorgaengerzeile committed war: beide haengten sich an denselben Vorgaenger -- (Fork). InnoDB-Zeilensperren fallen dagegen erst beim COMMIT. CREATE TABLE IF NOT EXISTS `AuditChainLock` ( `id` INT NOT NULL, `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT IGNORE INTO `AuditChainLock` (`id`, `updatedAt`) VALUES (1, NOW(3));