Search code examples
mysqltriggersmysql-error-1064

MySQL Trigger On A Column


I hav a table with several fields. One field is "date_assigned" and the other is "assigned". "date_assigned" has a datatype of timestamp and can be null. "assigned" has a datatype of tinyint and the values are either 0 (default; 'not assigned') or 1 ('assigned').

I would like to create a trigger that would automatically update the "assigned" value to 1 when "date_assigned" is updated with a value (is not null).

I've used triggers before, but have not used them in conjunction with checking if a value is null. I'm unclear on the syntax, so any help would be appreciated. So far, I've tried:

DELIMITER $$

CREATE
    TRIGGER `<database>`.`<trigger_name>` AFTER UPDATE
    ON `<database>`.`<table>`
    FOR EACH ROW BEGIN
    IF(NEW.date_assigned IS NOT NULL) THEN
    UPDATE <table> SET assigned = '1';

    END$$

DELIMITER ;

I just get Error Code: 1064. I looked upo the code, and it appears that it's a syntax error. So what syntax mistake am I making, and is this even the correct 'grammar'?


Solution

  • Try putting BEGIN in a new line as follows.

    DELIMITER $$
    
    CREATE
        TRIGGER `<database>`.`<trigger_name>` AFTER UPDATE
        ON `<database>`.`<table>`
        FOR EACH ROW 
    
        BEGIN
        IF(NEW.date_assigned IS NOT NULL) THEN
        UPDATE <table> SET assigned = '1';
    
        END;      //Change here also.
        $$
    
    DELIMITER ;