@Quetzsalcoatl

Как в mysql задать уникальный идентификатор по полям в таблице?

Доброго времени суток!

Имеется таблица такого вида для хранения изображений:

id, postid, xfield, xid, link

Так вот, помимо уникального id, имеется также xid, который должен быть уникальным инкрементом, для уникальных полей xfield, то бишь для каждого нового значения xfield xid начинает отсчет сначала.

id, postid, xfield, xid, link
1, 13, pole1, 1, /upload/1.jpg
2, 16, pole1, 2, /upload/2.jpg
1, 19, pole2, 1, /upload/3.jpg

Прошу помощи, ибо сам, ввиду низкого уровня понимания php и mysql не могу решить данную задачу.
  • Вопрос задан
  • 417 просмотров
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
xid - не является уникальным инкрементом. Он будет уникальным для записей xfield.
Сделайте уникальный индекс [xfield, xid] + вставка данных через хранимую процедуру, где
модучаете select max(xid) + 1 from table where xfield = value
Далее insert c полученным xid + 1, если выскочит исключение по уникальному индексу, то повторить.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Самый очевидный способ - писать триггер BEFORE INSERT. В триггере блокировать таблицу, искать максимальный `xid` для `xfield`, записывать следующий, разблокировать таблицу.
Ну или делать то же самое в самом скрипте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы