我有一个网站,我可以通过点击表格更新行的日期,当我更改数值并按数据库中的输入更新。
我想要的:在日期字段中。只需输入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的新手遇到了死胡同,所以任何人都可以填补空白或指出我正确的方向,
那会很棒
答案 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 ;