MySQL устанавливает текущую дату в поле DATETIME при вставке - PullRequest
19 голосов
/ 16 июля 2009

У меня есть поле DATETIME 'create_date', которое я хотел бы заполнить текущей датой после вставки. Какой синтаксис я должен использовать для триггера для этого? Это то, что у меня есть, но это неверно.

CREATE TRIGGER set_created_date
BEFORE INSERT ON product
FOR EACH ROW BEGIN
SET NEW.created_date = now();

Ответы [ 4 ]

34 голосов
/ 17 октября 2012
DELIMITER ;;
CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
    SET NEW.created_date = NOW();
END;;
DELIMITER ;
18 голосов
/ 16 июля 2009

Лучше всего изменить этот столбец на отметку времени. MySQL автоматически использует первую временную метку в строке как «последнее изменение» и обновит ее для вас Это настраивается, если вы просто хотите сэкономить время создания.

См. Документ http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

15 голосов
/ 28 августа 2015

Начиная с MySQL 5.6.X вы можете сделать это:

ALTER TABLE `schema`.`users` 
CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;

Таким образом, ваш столбец будет обновляться с текущей отметкой времени при вставке или обновлении новой строки.

Если вы используете MySQL Workbench, вы можете просто поместить CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP в поле значения DEFAULT, например:

enter image description here

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html

3 голосов
/ 11 декабря 2014

Использование Now () не очень хорошая идея. Это только сохранить текущее время и дату. Он не будет обновлять текущую дату и время, когда вы обновите свои данные. Если вы хотите добавить время один раз, лучшим вариантом будет значение по умолчанию = Now (). Если вы хотите использовать метку времени. и хотите обновить это значение, каждый раз, когда обновляется эта строка. Тогда триггер - лучший вариант для использования.

  1. http://www.mysqltutorial.org/sql-triggers.aspx
  2. http://www.tutorialspoint.com/plsql/plsql_triggers.htm

Эти два итога помогут реализовать триггер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...