My проблема в том, что если две вставки происходят одновременно, то, по-видимому, бывают случаи, когда две записи оказываются активными = TRUE с одним и тем же именем, я думаю, потому что, когда база данных проверяется на наличие записей с этим именем, для установки значения false , ни одна из строк отсутствует, поэтому программа заключает, что обе записи могут иметь active = TRUE, несмотря на одно и то же имя.
Чтобы привести пример в псевдокоде:
Код: Выделить всё
CREATE TABLE entity (
id INT(11),
name VARCHAR(50),
active bit(1)
);
ВЫБРАЮ id FROM объект WHERE name = «name» AND active = TRUE;
I получить идентификатор этого объекта, назовем его, затем я обновлю эту запись
Код: Выделить всё
UPDATE entity SET active=FALSE WHERE id=
Код: Выделить всё
INSERT INTO entity (id,active) VALUES ('name',TRUE)
Альтернатива, о которой я думаю, — это не активный столбец, а вторая таблица, например
Код: Выделить всё
CREATE TABLE active_entity (
name VARCHAR(50),
active_record INT(11)
);
Для справки: я использую mysql 8.0, но мне интересно, как это будет работать с другими базами данных
Подробнее здесь: https://stackoverflow.com/questions/793 ... nt-updates
Мобильная версия