我正在写一个触发器。目标是将插入记录在表名log
:
CREATE TABLE log (
id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
column TINYTEXT,
value MEDIUMTEXT,
);
我的数据库充满了几个表,比如客户端。我写了一个触发器来记录客户端数据,如下所示:
CREATE DEFINER=`root`@`%` TRIGGER `client_after_insert` AFTER INSERT ON `t_client` FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE CONTINUE HANDLE FOR NOT FOUND SET done = TRUE;
INSERT INTO log(column, value) VALUES
('name', NEW.name),
('surname', NEW.surname),
('email', NEW.email);
# etc...
END
问题
是否有一种可靠的方法来遍历游标中的每一列,在一个FETCH colCur INTO colName
和get NEW.[colName]
中获取colName?
目标是自动获取新值FOR EACH COLUMNS
。这样,如果我们更改列的名称,我们也不必在触发器中更改它。