-- 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));
