Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 设置uuid的默认值时出现SQL语法错误_Mysql_Sql_Binary_Uuid - Fatal编程技术网

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

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(), '-', ''))

我有一个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
);


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

为方便您提供帮助,删除所有无关紧要的内容。默认子句的值必须是常量。。。。这意味着它不能是代码中的计算值。。如果您需要一些转换,您可以使用触发器。您使用的是哪个版本的
mysql
?请注意,您可能还需要一个更新触发器