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.
经验分享 程序员 微信小程序 职场和发展