My Das Problem besteht darin, dass es, wenn zwei Einfügungen gleichzeitig erfolgen, Fälle zu geben scheint, in denen zwei Einträge mit dem gleichen Namen als active = TRUE enden. Ich schätze, weil bei der Überprüfung der Datenbank auf Einträge mit diesem Namen der Wert „false“ gesetzt wird , keine der Zeilen vorhanden ist, und so das Programm kommt zu dem Schluss, dass beide Einträge trotz des gleichen Namens active = TRUE haben dürfen.
Um ein Beispiel im Pseudocode zu geben:
Code: Select all
CREATE TABLE entity (
id INT(11),
name VARCHAR(50),
active bit(1)
);
SELECT id FROM entity WHERE name = 'name' AND active = TRUE;
I Holen Sie sich die ID für dieses Objekt, nennen wir es, und aktualisiere dann für diesen Datensatz
Code: Select all
UPDATE entity SET active=FALSE WHERE id=
Code: Select all
INSERT INTO entity (id,active) VALUES ('name',TRUE)
Die Alternative, an die ich denke, besteht darin, keine aktive Spalte zu haben, sondern eine zweite Tabelle wie
Code: Select all
CREATE TABLE active_entity (
name VARCHAR(50),
active_record INT(11)
);
Als Referenz verwende ich MySQL 8.0, bin aber gespannt, wie das mit anderen Datenbanken funktionieren würde