我有这个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
);
答案 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
);
PS。需要MySQL 8.0.13或更高版本。