Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / set new в After Insert триггера / 9 сообщений из 9, страница 1 из 1
04.11.2014, 11:31:24
    #38795051
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
Добрый день!
Озадачился таким вопросом.
Мне надо получить после вставки некое значение, привязанное к полю с автоинкрементом.

Код: sql
1.
2.
3.
4.
-- Триггер After Insert
BEGIN
	set new.test_name = concat('Fields',new.test_id);
END



Выдает ошибку "Updating of NEW row is not allowed in after trigger"

В before триггера такая конструкция работает, но test_id еще не получен, и как быть?
...
Рейтинг: 0 / 0
04.11.2014, 13:09:08
    #38795121
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
miv32,

Именно получить - как и написано, в триггере After Insert. А вот присвоить в new.поле - никак.
...
Рейтинг: 0 / 0
04.11.2014, 13:49:53
    #38795150
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
а какой практический смысл в том, чтобы другое поле было равно константа + айди?
...
Рейтинг: 0 / 0
04.11.2014, 14:33:58
    #38795184
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
alex564657498765453а какой практический смысл в том, чтобы другое поле было равно константа + айди?Например, принятый в организации формат нумерации документов
...
Рейтинг: 0 / 0
04.11.2014, 15:28:41
    #38795250
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
Именно! :) miksoft как всегда прав.
...
Рейтинг: 0 / 0
04.11.2014, 19:11:37
    #38795495
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
miv32Именно! :) miksoft как всегда прав.

не неугадали оба...

у меня на фре лежат файлы - документы, и называны по номеру самого документа

А123Р скажем... но мне в голову не пришло брать вкачестве числа между буквами инод файла(аналог примарикея в базе)

ЗЫ
если миксофт так щитает,возми снего слово, что когда надо будет добавить новые типы документов, каждый со своей независимой нумерацией а в текущую архитектуру ты это никак не воткнёшь - то он тебе сам будет делать новые таблицы на каждый тип и писать многотабличный поиск по документам
...
Рейтинг: 0 / 0
04.11.2014, 19:25:50
    #38795516
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
alex564657498765453новые типы документовА кто сказал, что будут другие типы документов?
Например, заказы на условном сайте вполне могут нумероваться чем-то вида "ИМ-1235/2014". А цифры 12345 вполне могут быть первичным ключом или последними пятью цифрами из него. А суффикс /2014 может меняться от года к году. И на этом условном сайте совершенно нет необходимости пихать еще какие-то документы в таблицу заказов.
alex564657498765453брать вкачестве числа между буквами инод файла(аналог примарикея в базе)Инод файла не является полным аналогом первичного ключа. Как минимум, иноды могут выдаваться не по порядку. И, если не ошибаюсь, могут быть неуникальны.

alex564657498765453не неугадали оба...Я, кстати, не гадал. Информация из практики.
...
Рейтинг: 0 / 0
04.11.2014, 22:26:09
    #38795623
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
miksoftalex564657498765453новые типы документовА кто сказал, что будут другие типы документов?
Например, заказы на условном сайте вполне могут нумероваться чем-то вида "ИМ-1235/2014". А цифры 12345 вполне могут быть первичным ключом или последними пятью цифрами из него. А суффикс /2014 может меняться от года к году. И на этом условном сайте совершенно нет необходимости пихать еще какие-то документы в таблицу заказов.
alex564657498765453брать вкачестве числа между буквами инод файла(аналог примарикея в базе)Инод файла не является полным аналогом первичного ключа. Как минимум, иноды могут выдаваться не по порядку. И, если не ошибаюсь, могут быть неуникальны.

alex564657498765453не неугадали оба...Я, кстати, не гадал. Информация из практики.

инод таки уникальный, и примарикеи тоже могут выдаваться не по порядку. полная аналогия - системный идентификатор, который уникальный для определёного времени, но в процесе работы может меняться со временем...

да понятно что можно... любые данные вносимые в базу можно преобразовать в уникальный значение, и использовать это вкачестве примари кея - но зачем?

если есть общее правило которое работает всегда - на примари кея не ложить никакой другой логики, кроме как идентификатор для записи в базе. ибо рано или позно, понадобиться разделить.

ЗЫ
это полный аналог почему щитаеться правильной архитектурой - когда в функции(методы) не пишут кучу кода...как бы не казалось что сегодня не разделимо, завтра может понадобиться разделить или параметризировать работу на определёном шаге.

все можно делать - лишь бы работало. но не нужно абы ставить вкачестве ориентира!
...
Рейтинг: 0 / 0
04.11.2014, 22:39:08
    #38795630
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
set new в After Insert триггера
miv32Мне надо получить после вставки некое значение, привязанное к полю с автоинкрементом.Нафига? получайте его в запросе именно в момент, когда оно потребовалось.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / set new в After Insert триггера / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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