gpt4 book ai didi

MYSQL 触发器 - 存储更新的表数据

转载 作者:行者123 更新时间:2023-11-30 21:36:27 25 4
gpt4 key购买 nike

我有一个表格,用于跟踪员工在工作中花费的小时数。

    CREATE TABLE HOURLYWORKLOG (
EMPLOYEEREF INT(5) NOT NULL,
ORDERREF INT(5) NOT NULL,
HOURSWORKED VARCHAR(10),
TOTALPAY NUMERIC(10),
NOTES VARCHAR(10),
CONSTRAINT HOURLYWORKLOG_EMPLOYEES_FOREIGN_KEY FOREIGN KEY (EMPLOYEEREF) REFERENCES EMPLOYEES (EMPLOYEEREF),
CONSTRAINT HOURLYWORKLOG_ORDERS_FOREIGN_KEY FOREIGN KEY (ORDERREF) REFERENCES WORKORDER (ORDERREF));

如果 hoursworked 列更新,我希望创建一个触发器,将此数据存储在单独的表中。看了一圈,看不出有什么可以解释我需要做什么的,至少看完之后我无法理解所涉及的步骤。因此,我目前的解决方案是通过创建一个镜像表(使用不同的名称)

CREATE TABLE MODIFIEDHOURLYWORKLOG (
EMPLOYEEREF INT(5) NOT NULL,
ORDERREF INT(5) NOT NULL,
HOURSWORKED VARCHAR(10),
TOTALPAY NUMERIC(10),
NOTES VARCHAR(10));

然后创建一个触发器

CREATE TRIGGER MODIFIEDHWL ON HOURLYWORKLOG
AFTER INSERT
AS
BEGIN
INSERT INTO MODIFIEDHOURLYWORKLOG
(EMPLOYEEREF, ORDERREF, HOURSWORKED, TOTALPAY, NOTES)
SELECT I.EMPLOYEEREF, I.ORDERREF, I.HOURSWORKED, I.TOTALPAY, I.NOTES
FROM HOURLYWORKLOG T
INNER JOIN INSERTED I ON T.EMPLOYEEREF-I.EMPLOYEEREF
END;

这显然不起作用,并且会抛出我的语法不正确的错误。我不确定如何编写触发器来将数据从原始表传输到辅助表,基本上...

感谢您的帮助。

最佳答案

您想对 MySQL 使用触发器语法,而不是 SQL Server。像这样:

DELIMITER $$

CREATE TRIGGER MODIFIEDHWL ON HOURLYWORKLOG AFTER INSERT
FOR EACH ROW AS
BEGIN
INSERT INTO MODIFIEDHOURLYWORKLOG(EMPLOYEEREF, ORDERREF, HOURSWORKED, TOTALPAY, NOTES)
SELECT NEW.EMPLOYEEREF, NEW.ORDERREF, NEW.HOURSWORKED, NEW.TOTALPAY, NEW.NOTES
FROM DUAL
WHERE NOT NEW.HOURSWORKED <=> OLD.HOURSWORKED;
END;$$

DELIMITER ;

关于MYSQL 触发器 - 存储更新的表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com