我在互联网上搜索,他们说不允许在触发器内使用ALTER TABLE
。
如果我把它放在触发器中,它将显示错误:"在存储的函数或触发器中不允许显式或隐式提交。" 。
它是由Perl编写的,但仍然与原始的MySQL命令类似。
$dbh->do("CREATE TABLE Test1(Id INT PRIMARY KEY AUTO_INCREMENT,IP TEXT,MAC TEXT,TIME DATETIME,PrevTime DATETIME) ENGINE=InnoDB");
$dbh->do("CREATE Trigger trigger1 BEFORE UPDATE ON Test1
FOR EACH ROW
BEGIN
IF OLD.MAC <> NEW.MAC
THEN
SET NEW.PrevTime=OLD.TIME;
SET NEW.TIME='$datestring';
END IF;
END;")
我想在触发器中添加ALTER TABLE Test1 ADD PrevTIME DATETIME AFTER TIME
然后移除PrevTIME DATETIME
中的代码CREATE TABLE
。
换句话说......我想记录新日期并将旧日期移到展开栏 只更新日期然后更改表格。所以我使用触发器,但它给了我一个错误 有人说使用过程而不是触发......但我不知道如何。