MySQL: Comment créer un déclencheur pour définir la date de création de nouvelles lignes

J'ai rencontré un problème que j'ai essayé de créer deux colonnes TIMESTAMP dans ma base de données. On appelle created et un autre appelé updated. J'ai pensé qu'il serait facile de définir la valeur par défaut de CURRENT_TIMESTAMP et puis ON UPDATE CURRENT_TIMESTAMP pour la updated colonne. Mais pour une raison quelconque MySQL signifie que c'est une mauvaise idée... j'ai donc été à la recherche de façons de le faire sans avoir à mettre de l'un d'eux dans la requête d'insertion.

J'ai trouvé un moyen à l'aide d'un déclencheur dans cette réponsemais je continue à recevoir des erreurs. J'ai juste réussi à créer le déclic, mais maintenant, j'obtiens une erreur lorsque j'essaie d'insérer de nouvelles lignes affirmant que

1442 - ne Peut pas mettre à jour le tableau des "tâches" dans stockées/fonction du déclencheur, car il est déjà utilisé par une déclaration qui a invoqué cette fonction stockée/déclencheur.

Et je ne comprends pas ce que cela signifie à tous. Donc, j'espérais que quelqu'un ici pourrait jeter quelque lumière sur ce sujet.

Le SQL j'ai utilisé pour créer la table et que le déclencheur est comme suit:

CREATE TABLE `tasks` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `created` DATETIME,
  `updated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `title` VARCHAR(255) NOT NULL,
  `notes` TEXT,
  `status_id` INT(10) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  KEY `status_id` (`status_id`),
  CONSTRAINT `fk_tasks_statuses` FOREIGN KEY (`status_id`) REFERENCES `statuses` (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TRIGGER task_creation_timestamp AFTER INSERT ON tasks 
FOR EACH ROW
UPDATE tasks SET created = updated WHERE id = NEW.id;

Ce que je fais mal?

source d'informationauteur Svish