У меня есть таблица MySQL с двумя полями: a (int) и b (string) с использованием механизма InnoDB.
Я хочу структурировать его так, чтобы конкретное значение b могло появляться в таблице произвольное количество раз, но каждый раз, когда оно появляется, оно всегда должно появляться с одним и тем же значением a, т.е. предположим, что моя таблица выглядит следующим образом:
(a,b)
(1,'foo')
(2,'bar')
(2,'bar')
(2,'baz')
Я должен быть в состоянии успешно вставить (1, 'foo'), (2, 'bar') или даже (2, 'qux') в таблицу, но вставки (2, 'foo'), ( 1, 'bar') или (1, 'baz') должны завершиться ошибкой, потому что всякий раз, когда появляются эти строковые значения b, они всегда должны появляться с одинаковым значением a.
Есть идеи, как это сделать эффективно? Я играл с транзакциями и SELECT ... FOR UPDATE
, но не повезло. У меня неправильная структура таблицы?