powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить значение поля AutoIncrement в триггере?
11 сообщений из 11, страница 1 из 1
Как получить значение поля AutoIncrement в триггере?
    #38800178
Volk65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE DNC_PLUS.TRACKS (
  TRK_ID int(11) NOT NULL AUTO_INCREMENT,
  SORT_BY int(11) DEFAULT NULL,
  PRIMARY KEY (TRK_ID),
)
ENGINE = INNODB



Как должен выглядеть триггер, чтобы при вставке новой записи, в поле SORT_BY был скопирован новый уникальный TRK_ID.
Триггер AFTER выдает: Updating of NEW row is not allowed in after trigger​.
Триггер BEFORE: еще не имеет информации о новом ключе (TRK_ID).

Подскажите, как это можно реализовать.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800197
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volk65,

ну и стандартный вопрос - зачем вам дубль поля?
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800226
Volk65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну исходя из названия... Это значение поля будет меняться местами с предыдущей/следующей записью, и таким образом участвовать в действиях: переместить вверх/переместить вниз. Т.е. по этому полю будет производиться порядок вывода записей.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800234
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volk65Ну исходя из названия... Это значение поля будет меняться местами с предыдущей/следующей записью, и таким образом участвовать в действиях: переместить вверх/переместить вниз. Т.е. по этому полю будет производиться порядок вывода записей.
надо учить матчасть.
это поле для других целей.
если тебе надо произвольный порядок вывода(сортировки) заведи своё поле - в нём и устанавливай порядок отображения.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800237
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, ну какбэ ТС и завёл такое поле. Трудность только в записи туда "нужных" значений". Как обходной путь можно предложить, например, создать служебную таблицу с одним АИ полем, в бефоре инсерт триггере туда добавлять запись и выставлять сорт_бай=ласт_инсерт_ид.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800240
Volk65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так я и завел другое поле. Надо не учить матчасть, а внимательно смотреть первый пост.
Я повторю вопрос.
Как в триггере на INSERT переписать новое значение из поля TRK_ID (которое автоикремент) в поле SORT_BY ?
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800244
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volk65, никак. По причинам, озвученным вами же в первом посте. Можно записать туда что-то другое.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800247
Volk65
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirвадя, ну какбэ ТС и завёл такое поле. Трудность только в записи туда "нужных" значений". Как обходной путь можно предложить, например, создать служебную таблицу с одним АИ полем, в бефоре инсерт триггере туда добавлять запись и выставлять сорт_бай=ласт_инсерт_ид.

Ну да. Идея понятна. Через стороннюю таблицу. Скорее всего так и сделаю. Немного кривовато, конечно, но если нет другого способа...
Просто подумал, что можно по-простому:
Код: sql
1.
SET NEW.SORT_BY = NEW.TRK_ID
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800249
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volk65но если нет другого способану, сиквенсов в мускле нет, только вот так эмулировать
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800314
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сортировать так:
Код: sql
1.
ORDER BY IFNULL(SORT_BY,TRK_ID)

Правда, так не получится использовать для сортировки индекс. Но по моей практике это и так почти никогда не получается в более-менее сложных запросах.
...
Рейтинг: 0 / 0
Как получить значение поля AutoIncrement в триггере?
    #38800321
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каюсь, слона не приметил.
но вместо триггера, для вставки можно использовать хранимку.
last insert id можно вставить куда угодно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить значение поля AutoIncrement в триггере?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]