我想重新创建一个我以前创建和删除的触发器。不能创建/删除触发器
删除SQL:
DROP TRIGGER openitdb.trgLicenseInsert;
删除错误:
Error Code: 1360. Trigger does not exist
创建SQL:
DELIMITER $$
CREATE TRIGGER trgLicenseInsert
AFTER UPDATE ON SoftwareLicenseDetails
FOR EACH ROW BEGIN
INSERT INTO audithistory (audit_date, audit_field, audit_oldvalue, audit_changelog_fk, audit_newvalue, audit_assetid_fk) VALUES (Now(),'Software License Details', (SELECT Title FROM SoftwareTypes WHERE ID = (SELECT SoftwareNameFK
FROM SoftwareLicenseDetails
WHERE ComputerFK=new.ComputerFK
ORDER BY ID Desc
LIMIT 1)), (SELECT MAX(ID) FROM Changelog as ChangelogID), 'License Added',new.ComputerFK);
END; $$
DELIMITER ;
创建错误:
Error Code: 1359. Trigger already exists
触发器不会显示在MySQL Workbench中,但不知何故它被标记为已存在。
SHOW TRIGGERS
:
我怎样才能解决这个问题呢?我错过了什么吗?
编辑:
我试图结合两个触发器,但我在第6行得到一个错误(IF new.Flag = 0 ..)
DELIMITER $$
CREATE TRIGGER trgSoftwareLicenseDetails
AFTER UPDATE ON SoftwareLicenseDetails
FOR EACH ROW BEGIN
IF new.Flag = 0 THEN
INSERT INTO audithistory (audit_date, audit_field, audit_oldvalue, audit_changelog_fk, audit_newvalue, audit_assetid_fk) VALUES (Now(),'Software License Details', (SELECT Title FROM SoftwareTypes WHERE ID =
(SELECT SoftwareNameFK FROM SoftwareLicenseDetails
WHERE ComputerFK=new.ComputerFK
ORDER BY ID Desc
LIMIT 1)), (SELECT MAX(ID) FROM Changelog as ChangelogID), 'License Added',new.ComputerFK);
FROM SoftwareLicenseDetails
WHERE ComputerFK=new.ComputerFK
ORDER BY ID Desc
LIMIT 1)), (SELECT MAX(ID) FROM Changelog as ChangelogID), 'License Added',new.ComputerFK);
ELSE IF new.Flag = 1 THEN
INSERT INTO audithistory (audit_date, audit_field, audit_oldvalue, audit_changelog_fk, audit_newvalue, audit_assetid_fk) VALUES (Now(),'Software License Details', 'N/A', (SELECT MAX(ID) FROM Changelog as ChangelogID), 'License Deleted',old.ComputerFK);
END IF;
END; $$
DELIMITER ;
也许问题到工作台?尝试在MySQL控制台中进行此操作。 –