【问题标题】:MySQL: adding previous and current as a default value for a field 'academic-year'MySQL:添加以前和当前作为字段“学年”的默认值
【发布时间】:2019-02-15 06:07:17
【问题描述】:

所以我有一个显示当前年份的触发器,但我希望有一个结果显示一个学年的上一年度和当前年份。

CREATE TRIGGER insert_year
BEFORE INSERT ON transactions
    FOR EACH ROW SET NEW.academic_year = YEAR(NOW());

这是我尝试过的,但它不会真正起作用

CREATE TRIGGER insert_year
BEFORE INSERT ON transactions
    FOR EACH ROW SET NEW.academic_year = YEAR(NOW())-1"-"YEAR(NOW());

我想要一个显示“2018-2019”的学年。任何帮助将非常感激。谢谢!

【问题讨论】:

  • academic_year 是什么数据类型,多长时间?
  • 这一直是个问题。我将其设置为 INT 而不是 VARCHAR。谢谢@P.Salmon先生!
  • 触发器不会“显示”任何东西。他们倾向于修改数据。请提供样本数据和期望的结果。

标签: mysql sql database-trigger


【解决方案1】:

问题在于您的年份串联。你需要使用CONCAT-函数:

CREATE TRIGGER insert_year
BEFORE INSERT ON years
    FOR EACH ROW SET NEW.academic_year = CONCAT(YEAR(NOW())-1, "-", YEAR(NOW()));

【讨论】:

  • 感谢有关 concat 的信息。并没有真正意识到这一点。但是您所做的查询输出仍然是“2018”。不是“2018-2019”。不知何故,它只读取第一部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 2011-09-16
  • 2011-08-08
相关资源
最近更新 更多