更新前的MySQL触发器 - 从字符串

时间:2015-05-04 11:38:58

标签: mysql datetime triggers

我有一个网站,我可以通过点击表格更新行的日期,当我更改数值并按数据库中的输入更新。

我想要的:在日期字段中。只需输入mm / dd(例如05-20)按回车。

然后我的触发器应该:

CREATE TRIGGER before_transactions_update 
BEFORE UPDATE
ON Transactions FOR EACH ROW

BEGIN
 -- variable declarations
    declare inputDate integer;


-- trigger code
-- get month and day
-- LEFT(inputDate, 2); RIGHT(inputDate, 2)
-- STR_TO_DATE('2015,MONTH(LEFT),DAY(RIGHT)','%Y,%m,%d');
   SET INSERTED.date = 2015-month-day-00-00-00;

END;

这是我“尝试过”的,或者至少就我自己来说而言。 MySQL工作台在我的var的声明中阻止了我,它告诉我在声明后我需要一个半冒号,我似乎不需要

所以我一直在谷歌搜索几个小时,我作为MySQL的新手遇到了死胡同,所以任何人都可以填补空白或指出我正确的方向,

那会很棒

1 个答案:

答案 0 :(得分:0)

您不能将输入参数直接传递给触发器,除非该输入位于update statement

中的某个位置

您还需要在触发器中指定分隔符。

如果您的输入值始终采用示例中显示的m-d形式,并且year是当前年份,那么以下触发器应该可以完成此任务。

delimiter //
CREATE TRIGGER before_transactions_update BEFORE UPDATE
ON Transactions 
FOR EACH ROW
BEGIN
   if length(new.date) = 5  then
     set new.date = concat(year(curdate()),'-',new.date);
   end if ;
END;//

delimiter ;