gpt4 book ai didi

mysql - 如何使用我当前的 AFTER UPDATE 触发器正确记录 Student 表的记录?

转载 作者:行者123 更新时间:2023-11-30 22:00:23 24 4
gpt4 key购买 nike

-- Create the SysLog table

DROP TABLE IF EXISTS SysLog ;

CREATE TABLE IF NOT EXISTS SysLog (
ID INT NOT NULL AUTO_INCREMENT,
TableName VARCHAR(255) NOT NULL COMMENT 'The table that is being logged',
Message VARCHAR(255) NOT NULL COMMENT 'The logging message',
Created DATETIME NOT NULL DEFAULT NOW(),
PRIMARY KEY (ID)
)
ENGINE = InnoDB
COMMENT 'The system log table' ;
CREATE UNIQUE INDEX SysLog_UNIQUE ON SysLog (ID ASC) ;


-- Create an after update trigger that creates a record in a new table named SysLog
-- whenever a record in the -- student table is changed.
USE College ;

DROP TRIGGER IF EXISTS Student_After_Update;

DELIMITER $$


CREATE TRIGGER Student_After_Update
AFTER UPDATE ON Student
FOR EACH ROW

BEGIN

INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, CONCAT('', "Updated ID=" StudentID), NOW());
INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, CONCAT('', "Updated ID=" StudentID), NOW());
INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, CONCAT('', "Updated ID=" StudentID), NOW());
END $$

DELIMITER ;

UPDATE Student
SET Scholarship=7000
WHERE ID= 2;

UPDATE Student
SET Scholarship=9000
WHERE ID= 5;

UPDATE Student
SET Scholarship=10000
WHERE ID= 7;

SELECT * FROM SysLog
ORDER BY ID DESC;

大家好,

我正在创建一个 AFTER UPDATE,它会在学生表中的记录发生更改时在名为 SysLog 的新表中创建一条记录,但我遇到的问题是如何正确使用 CONCAT 语句来正确输出“UpdatedID=X”的消息,其中 X 是每条记录中正在更新的 StudentID?这是我到目前为止的代码。

最佳答案

CONCAT 表达式中好像少了一个逗号。零长度字符串的用途不明确。这样做是合理的,但有点奇怪,因为似乎没有任何理由这样做。

此外,要引用与 UPDATE 语句匹配的列的值,请使用 NEW.OLD. 来限定列名称。

字符串文字可以用单引号括起来。 (MySQL 确实接受字符串文字周围的双引号,作为 SQL 标准的偏差(扩展)。其他数据库为标识符保留双引号。我的建议是始终在字符串文字周围使用单引号。)

并且完全不清楚为什么触发器需要将三行插入到 Syslog 表中。

  INSERT INTO SysLog (TableName, Message, Created) 
VALUES ('Student', CONCAT('Updated ID=' , NEW.StudentID), NOW());
^ ^ ^ ^ ^ ^^^^

关于mysql - 如何使用我当前的 AFTER UPDATE 触发器正确记录 Student 表的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599471/

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