SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.08.2016 23:23:46

Konstantin78
Участник
Зарегистрирован: 21.02.2013
Сообщений: 14

MySQL: Правильно обновить данные после вставки

Доброе время суток

Есть таблица (см. внизу)

Код:

id   date           year_month
1   2016-08-25        201608

При вставки записи (с приложения/клиента), я заполняю поле «date».
Вопрос:
Существует возможность атоматом (на стороне сервера) как-нибудь заполнить поле «year_month» (тип INT), после заполнения «date»? если в этом поле должно отображаться «месяц» и «год» (взятой с поля "date"), если триггером этого сделать не выйдет.
Или всетаки это должен делать клиент.

Заранее спасибо
P.S.
Я знаю... еще есть функции "year" и "month" (для разбивки на год и месяц). Мне нужно поле «year_month», для вывода на страничку "Архива" данных, где отображается только "год" и "месяц", и потом легче делать выборку (для показа), данных за месяц, т.е. соответствующую ссылку делать на страничке
KBO вне форума

Отредактированно Konstantin78 (25.08.2016 23:26:02)


Прикрепленные файлы:
Attachment Icon tabl1.png, Размер: 1,478 байт, Скачано: 320

Неактивен

 

#2 25.08.2016 23:40:23

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: MySQL: Правильно обновить данные после вставки

А почему триггером не выйдет? Именно он здесь и нужен.

Неактивен

 

#3 26.08.2016 01:04:38

Konstantin78
Участник
Зарегистрирован: 21.02.2013
Сообщений: 14

Re: MySQL: Правильно обновить данные после вставки

vasya написал:

А почему триггером не выйдет? Именно он здесь и нужен.

Ну потому что, при срабатывании триггера на встаку "AFTER  INSERT", после того как я добавил новую запись, выдает ошибку:
«#1442 - Can't update table 'operator' in stored function/trigger because it is already used by statement which invoked this stored function/trigger»

Триггер после записи обычно нужен для изменения каких-то данных в ДРУГИХ таблицах, но НЕ в текущей

Неактивен

 

#4 26.08.2016 01:19:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: MySQL: Правильно обновить данные после вставки

before insert ?

Неактивен

 

#5 26.08.2016 13:13:58

Konstantin78
Участник
Зарегистрирован: 21.02.2013
Сообщений: 14

Re: MySQL: Правильно обновить данные после вставки

vasya написал:

before insert ?

Мне казалось, что нужно получить сначало "date", чтоб потом выставить "year_month", или нет?

Неактивен

 

#6 26.08.2016 14:23:55

Konstantin78
Участник
Зарегистрирован: 21.02.2013
Сообщений: 14

Re: MySQL: Правильно обновить данные после вставки

Konstantin78 написал:

vasya написал:

before insert ?

Мне казалось, что нужно получить сначало "date", чтоб потом выставить "year_month", или нет?

Помогло обычное "view" (созданное с тем полем, которое мне нужно).

Неактивен

 

#7 26.08.2016 19:56:06

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: MySQL: Правильно обновить данные после вставки

Konstantin78 написал:

Мне казалось, что нужно получить сначало "date", чтоб потом выставить "year_month", или нет?

Нет.
..
new.year_month = concat(year(new.`date`),month(new.`date`));
..

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson