ID|RID|SID|Name
1| 1 | 1 |Alpha
2| 1 | 2 |Beta
3| 2 | 1 |Charlie
ID уникален с автоинкрементом, проблема не в этом. RID группирует наборы данных вместе, мне нужен способ сделать SID уникальным для каждой группы RID. Эта структура верна, я ожидаю, что кто-то скажет «разделить ее на несколько таблиц», здесь это не вариант (это таксономическая классификация).
Как показано, при RID 1 SID увеличивается с 1 до 2, но когда RID изменяется на 2, SID равен 1.
У меня есть код для получения следующего значения: SELECT IFNULL(MAX(SID),0)+1 AS NextVal FROM t WHERE RID=1
, вопрос в том, как использовать это значение при вставке новой записи?
Я не могу просто запустить два запроса, так как это может привести к дублированию, поэтому таблица должна быть заблокирована, в идеале только для записи. Каким будет правильный способ сделать это?