web-dev-qa-db-fra.com

MySQL a fixé la date actuelle dans un champ DATETIME lors de l'insertion

J'ai un champ DATETIME 'created_date' que je souhaiterais remplir avec la date actuelle lors de l'insertion. Quelle syntaxe dois-je utiliser pour le déclencheur pour cela? C'est ce que j'ai jusqu'à présent mais c'est incorrect.

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

Votre meilleur pari est de changer cette colonne en un horodatage. MySQL utilisera automatiquement le premier horodatage consécutif comme valeur de "dernière modification" et le mettra à jour pour vous. Ceci est configurable si vous voulez simplement gagner du temps de création.

Voir doc http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

18
dunedain289
DELIMITER ;;
CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
    SET NEW.created_date = NOW();
END;;
DELIMITER ;
35
pevik

Depuis MySQL 5.6.X, vous pouvez le faire:

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

De cette façon, votre colonne sera mise à jour avec l'horodatage actuel lorsqu'une nouvelle ligne est insérée ou mise à jour.

Si vous utilisez MySQL Workbench, vous pouvez simplement mettre CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP dans le champ de valeur DEFAULT, comme ceci:

enter image description here

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

15
Coreus

Utiliser Now () n'est pas une bonne idée. Il enregistre uniquement l'heure et la date actuelles. Il ne mettra pas à jour la date et l'heure actuelles, lorsque vous mettez à jour vos données. Si vous souhaitez ajouter l'heure une fois, la valeur par défaut = Now () est la meilleure option. Si vous souhaitez utiliser l'horodatage. et souhaitez mettre à jour la valeur this, chaque fois que cette ligne est mise à jour. Ensuite, le déclencheur est la meilleure option à utiliser.

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

Ces deux totaux aideront à implémenter le déclencheur.

3
Hafiz Shehbaz Ali