SQL синтаксическая ошибка при установке значения по умолчанию для uuid - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть этот 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 голосов
/ 21 февраля 2020

Обернуть выражение по умолчанию в скобки.

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 или выше.

0 голосов
/ 21 февраля 2020

Вы не можете использовать функцию по умолчанию. Вместо этого вы можете использовать триггеры.

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