mysql字段uuid,MySQL设置默认ID UUID
Im 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.
Im 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.