我想重新創建一個我以前創建和刪除的觸發器。不能創建/刪除觸發器
刪除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控制檯中進行此操作。 –