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:
CREATE TABLE FOO (
id CHAR(36) PRIMARY KEY DEFAULT uuid()
);
I greatly appreciate your assistance.
解决方案
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.
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.