SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 19.02.2017 12:30:13

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Как записать ДатуВремя обновления поля?

Используется:
- MySQL - 5.7

Имеется
Таблица "Основная":
- Поле 1 (ДатаВремя) -
- Поле 2. Статус (меняется. Данные из справочника)

Таблица "Журнал обновлений":
- таблица содержит состав полей необходимый для журналирования обновлений всех полей основной таблицы.
Заполнение таблицы "Журнал обновлений" осуществляет триггер.

Вопрос.
1. Как сделать чтобы при смене статуса в таблице "Основная" в "Поле 1 (ДатаВремя)" фиксировалось ДатаВремя обновления статуса?
2. Правильно ли будет сделать, чтобы один и тот же триггер прописывал обновления в "Журнал обновлений" и потом в таблицу "Основная" в "Поле 1 (ДатаВремя)"?

Неактивен

 

#2 19.02.2017 14:45:49

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

Re: Как записать ДатуВремя обновления поля?

create table `Таблица "Основная"`(
`Поле 1` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...

Неактивен

 

#3 21.02.2017 08:41:56

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Как записать ДатуВремя обновления поля?

vasya написал:

create table `Таблица "Основная"`(
`Поле 1` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...

А можно сделать так, чтобы поле обновления было привязано к изменению одного поля, а не любого поля в записи?

Просто при обновление одного поля реагируют два поля с фикцией ДатыВремя обновления..
см. скрин...

Таблица

CREATE TABLE `tst_001_tb_00` (
    `id` INT(11) NOT NULL,
    `pl_1_txt` TEXT NULL,
    `update_pl_2` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `pl_2_enum` ENUM('Y','N') NULL DEFAULT NULL,
    `update_pl_3` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `pl_3_txt` TEXT NULL,
    INDEX `id` (`id`)
)
COMMENT='Тест по влиянию размер таблицы\r\n - типа таблицы;\r\n - типа строк;\r\n - типа наличие инкримента;\r\n - типа наличие NULL;\r\n'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

Отредактированно sql157 (21.02.2017 08:42:23)


Прикрепленные файлы:
Attachment Icon 6.jpg, Размер: 70,579 байт, Скачано: 416

Неактивен

 

#4 21.02.2017 12:24:36

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

Re: Как записать ДатуВремя обновления поля?

sql157 написал:

А можно сделать так, чтобы поле обновления было привязано к изменению одного поля, а не любого поля в записи?

да, с помощью триггера

Неактивен

 

Board footer

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