I\'m trying to create tables in a database that has an id
field that will populate the id with an UUID by default.
I tried something like:
MySQL as of 5.7 does not support using a function as the default value of a column.
The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression.
https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html
The alternative would be to use a trigger to monitor the BEFORE INSERT
of the desired table.
DELIMITER ;;
CREATE TRIGGER `foo_before_insert`
BEFORE INSERT ON `foo` FOR EACH ROW
BEGIN
IF new.id IS NULL THEN
SET new.id = uuid();
END IF;
END;;
DELIMITER ;
This will change the default value of an INSERT
statement to the uuid()
value, unless it has been explicitly defined.
If you use binary(16)
as the type, you can set the default as follows:
unhex(replace(uuid(),'-',''))