SQL 为 uuid 设置默认值时出现语法错误

SQL syntax error when setting default value for uuid

我有这个 MYSQL 查询,它说我在第 22 行有一个语法错误,即带有

的那个
external_id             binary(16) default unhex(replace(uuid(), '-', '')) not null

我不明白这里有什么问题,你能帮我吗?谢谢

create table transfer
(//other fields 
  external_id             binary(16) default unhex(replace(uuid(), '-', '')) not null,
  constraint uidx_transfer_external_id
  unique (external_id),
//other constraints
);

您不能在默认值下使用函数。相反,您可以使用触发器。

CREATE TRIGGER before_insert_mytable
  BEFORE INSERT ON mytable
  FOR EACH ROW
  SET new.external_id = uuid();

将默认值表达式括在括号中。

create table transfer
( -- other fields 
  external_id binary(16) default (unhex(replace(uuid(), '-', ''))) not null,
  constraint uidx_transfer_external_id
  unique (external_id)
  -- other constraints
);

fiddle

PS。 MySQL 需要 8.0.13 或更高版本。