0

I am trying to create a trigger with an IF condition and I am getting an error on line 6.

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 ;

Error:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM SoftwareLicenseDetails WHERE ComputerFK=new.ComputerFK ORDER BY ID Desc LI' at line 6 0.000 sec

What am I missing?

1
  • 1
    What error do you get? Commented Nov 12, 2015 at 10:42

1 Answer 1

1

Check this:

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);

    ELSEIF 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 ;
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks that worked! So there is no space between the ELSE and the IF.
@Brian: Please accept the answer if you find it correct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.