Looking to use a trigger on a MYSQL table when the row is updated, anytime the row is updated. Only setting the id if the id field is null
create trigger before_id_update BEFORE UPDATE ON USERS for each row BEGIN if id iS NULL THEN SET id = username END IF; END
Currently nothing is happening when the table row is updated
Advertisement
Answer
Your code should raise a syntax error, since id
and username
are undefined variables. If you want to access the values on the updated row, use pseudo-tables NEW
or OLD
.
You also need a delimiter
statement at the beginning of your code, and the set
command should be terminated with a semi-colon.
You presumably want:
delimiter // create trigger before_id_update before update on users for each row begin if new.id is null then set new.id = new.username; end if; end // delimiter ;
Note that this only makes sense if both id
and username
have the same datatype (which is not obvious from their names).