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