I'm not sure if I use a wrong syntax or I found a bug. But I can't read a 
column's default value from a trigger.

The trigger just checks if the INSERT is trying to set a column to its default 
value:

DELIMITER ||

CREATE TABLE `blog`
(
        `created_by` CHAR(60) NOT NULL DEFAULT ''
);

CREATE TRIGGER `blog_default_created_by`
        BEFORE INSERT
        ON `blog`
        FOR EACH ROW
BEGIN
        IF NEW.`created_by` = DEFAULT(NEW.`created_by`) THEN
                SET NEW.`created_by` = USER();
        END IF;
END;

||
DELIMITER ;


But when I try to INSERT a row I get an error:


MariaDB [test]> INSERT INTO `blog` SET `created_by` = '';
ERROR 1364 (HY000): Field 'created_by' doesn't have a default value


This problem disappears if I replace DEFAULT(NEW.`created_by`) with '', so I'm 
not in troubles - but in theory a default value may change, so using DEFAULT() 
is a better practice.

The syntax I'm using could be wrong, but I've tried all the alternatives which 
seemed to me possible, and they didn't work: DEFAULT, DEFAULT(`created_by`), 
DEFAULT('created_by').

However I may still miss something, so I wanted to ask to the list before 
reporting this in JIRA.

Federico Razzoli


_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to