1
如何正確記錄我當前的AFTER UPDATE觸發器的Student表記錄?
-- 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
\t \t INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, \t CONCAT('', "Updated ID=" StudentID), NOW());
INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, \t CONCAT('', "Updated ID=" StudentID), NOW());
INSERT INTO SysLog(TableName, Message, Created)
VALUES (Student, \t 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工作,但問題我我該如何正確使用CONCAT語句來正確輸出「UpdatedID = X」的消息,其中X是每個記錄中正在更新的StudentID?這是我迄今爲止的代碼。
spencer7593-你是什麼意思,你不明白爲什麼觸發器會插入三行?我還會如何記錄三個不同學生的記錄已更新? – User445555
@ spencer7593-我現在看到爲什麼你不明白,因爲觸發器爲一個學生的記錄更新創建三個不同的行。我該如何解決? – User445555
@ spencer7593 - 你說得對,如果我只在我的觸發器中插入一條INSERT語句,它將只產生三條由UPDATE語句更新的記錄。謝謝 – User445555