Как в mysql задать уникальный идентификатор по полям в таблице?
Доброго времени суток!
Имеется таблица такого вида для хранения изображений:
id, postid, xfield, xid, link
Так вот, помимо уникального id, имеется также xid, который должен быть уникальным инкрементом, для уникальных полей xfield, то бишь для каждого нового значения xfield xid начинает отсчет сначала.
xid - не является уникальным инкрементом. Он будет уникальным для записей xfield.
Сделайте уникальный индекс [xfield, xid] + вставка данных через хранимую процедуру, где
модучаете select max(xid) + 1 from table where xfield = value
Далее insert c полученным xid + 1, если выскочит исключение по уникальному индексу, то повторить.
Для правильного вопроса надо знать половину ответа
Самый очевидный способ - писать триггер BEFORE INSERT. В триггере блокировать таблицу, искать максимальный `xid` для `xfield`, записывать следующий, разблокировать таблицу.
Ну или делать то же самое в самом скрипте.