Mysql 设置uuid的默认值时出现SQL语法错误
我有一个MYSQL查询,它说我在第22行有一个语法错误Mysql 设置uuid的默认值时出现SQL语法错误,mysql,sql,binary,uuid,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(), '-', ''))
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
);
PS.MySQL版本8.0.13或更高版本需要。为方便您提供帮助,删除所有无关紧要的内容。默认子句的值必须是常量。。。。这意味着它不能是代码中的计算值。。如果您需要一些转换,您可以使用触发器。您使用的是哪个版本的
mysql
?请注意,您可能还需要一个更新触发器