11
我试图在数据库中创建两个TIMESTAMP列时遇到了问题。一个叫做created
,另一个叫updated
。我认为可以很容易地将0123和S6106配置为CURRENT_TIMESTAMP
,然后ON UPDATE CURRENT_TIMESTAMP
的updated
列的默认值。但由于某种原因MySQL意味着这是一个坏主意......所以我一直在寻找方法来做到这一点,而不必在插入查询中设置其中的一个。MySQL:如何创建设置新行的创建日期的触发器
我在this answer中找到了一个使用触发器的方法,但我不断收到错误。我好不容易才实际创建触发器,但现在我得到的错误,当我尝试插入新行声称
1442 - 无法更新存储功能表“任务” /触发器,因为它已经使用声明调用这个存储的函数/触发器。
我并没有明白这意味着什么。所以,我希望这里有人能够阐明这个问题。
我用来创建表和触发器是如下的SQL:
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=InnoDB DEFAULT CHARSET=utf8;
CREATE TRIGGER task_creation_timestamp AFTER INSERT ON tasks
FOR EACH ROW
UPDATE tasks SET created = updated WHERE id = NEW.id;
我在做什么错在这里?