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

时间:2020-02-21 10:24:15

标签: mysql sql binary 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
);

2 个答案:

答案 0 :(得分:0)

不能使用默认值的功能。相反,您可以使用触发器。

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

答案 1 :(得分:0)

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

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或更高版本。