在 MySQL 中使用带有日期的连接字符串创建触发器

Posted

技术标签:

【中文标题】在 MySQL 中使用带有日期的连接字符串创建触发器【英文标题】:Creating Trigger with a concatenated string with a date in MySQL 【发布时间】:2021-09-29 04:31:31 【问题描述】:

我正在尝试弄清楚如何使用包含日期的串联字符串创建触发器插入。

我正在创建的触发器是在 tbl_employee 上创建的。每次我将新员工插入表中时,我希望它使用以下信息更新另一个名为 tbl_employee_audit 的表。

id audit_data
1 New employee with ID = 1221 was added on Sep 21, 2016

这是我创建触发器的代码

CREATE TRIGGER adding_employee
AFTER INSERT
ON tbl_employee FOR EACH ROW
INSERT INTO tbl_employee_audit(ID, AUDIT_DATA) 
VALUES(ID, CONCAT('New employee with ID = ', new.emp_id, ‘was added on’, DATE));

问题是我可以让它在没有最后添加的日期的情况下工作,但如果我尝试使用日期,在将新记录插入 tbl_employees 时会出错。

错误: #1054 - “字段列表”中的未知列“日期”

我在这里错过了什么?

提前致谢

【问题讨论】:

【参考方案1】:

也许您只想要当前日期?

CREATE TRIGGER adding_employee AFTER INSERT
ON tbl_employee FOR EACH ROW
    INSERT INTO tbl_employee_audit(ID, AUDIT_DATA) 
        VALUES(ID, CONCAT('New employee with ID = ', new.emp_id, ' was added on ', CURRENT_DATE));

【讨论】:

【参考方案2】:

要获取您的日期,您需要对其进行格式化

SELECT DATE_FORMAT(CURRENT_DATE, "%b %d, %Y")
| DATE_FORMAT(CURRENT_DATE, "%b %d, %Y") | | :------------------------------------------------- | | 2021 年 7 月 21 日 |

db小提琴here

CREATE TRIGGER adding_employee AFTER INSERT
ON tbl_employee FOR EACH ROW
    INSERT INTO tbl_employee_audit(ID, AUDIT_DATA) 
        VALUES(ID, CONCAT('New employee with ID = ', new.emp_id, ' was added on ', DATE_FORMAT(CURRENT_DATE, "%b %d, %Y")));

【讨论】:

这行得通。非常感谢您的帮助 别忘了accept the answer

以上是关于在 MySQL 中使用带有日期的连接字符串创建触发器的主要内容,如果未能解决你的问题,请参考以下文章

mysql触发器使日期相加减?

MySQL 触发器使用不同的 TIMEZONE

希望在画面中创建动态日期桶

MySQL触发器在插入或更新之前将日期值更改为weekstart

带有 MySQL 连接器的 C# - 访问被拒绝

php读取mysql网页显示是1970-01-01 数据库中是字符串类型,比如41036读取出为日期为2012-05-07