MySQL set default id UUID

后端 未结 2 1092
庸人自扰
庸人自扰 2020-12-31 14:19

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:



        
相关标签:
2条回答
  • 2020-12-31 15:08

    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.

    0 讨论(0)
  • 2020-12-31 15:11

    If you use binary(16) as the type, you can set the default as follows:

    unhex(replace(uuid(),'-',''))
    
    0 讨论(0)
提交回复
热议问题