【发布时间】:2016-10-03 18:36:46
【问题描述】:
在将数据(例如,日期)插入event_date 列后,我想要一个触发器来更新同一个表的两列,并将“event_quarter”和“event_year”的对应值排成一行。
我有这个测试table 有四列:
id、event_date、event_quarter、event_year
我一直在努力使用此代码以使其正常工作:
DELIMITER $$
CREATE TRIGGER `fill_event_quarter_and_year`
AFTER INSERT
ON `test_table`
FOR EACH ROW
BEGIN
DECLARE event_date_ DATE;
SELECT event_date
INTO event_date_
FROM `test_table`
WHERE NEW.id = id;
UPDATE `test_table`
SET event_quarter = QUARTER(event_date_), event_year = YEAR(event_date_)
WHERE NEW.id = id;
END
$$
但是,我收到以下错误:
1442 - 无法更新存储函数/触发器中的表“test_table”,因为它已被调用此存储的语句使用
函数/触发器
我该如何解决?
然后看起来我必须创建两个触发器,一个用于此INSERTing 操作,另一个用于UPDATEing 操作。正确的?更新特定行或记录时会怎样?
或者是否有可能同时触发更新和插入操作?
【问题讨论】: