MySQL `unique_index` с ошибкой даты и времени - PullRequest
0 голосов
/ 09 июля 2020
ALTER TABLE tbl_ps ADD UNIQUE 
`unique_index`(`UserId`,`VillageId`,`SubcategoryId`,date(updatedatetime) 

выдача ошибки

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Функциональные индексы реализованы в MySQL начиная с версии 8.0.15. Например, вы можете сделать:

ALTER TABLE tbl_ps ADD UNIQUE unique_index(
  UserId, VillageId, SubcategoryId, (date(updatedatetime))
);

Не забудьте писать выражения в круглых скобках.

Затем вы можете запустить:

insert into tbl_ps (UserId, VillageId, SubcategoryId, updatedatetime) 
  values (1, 2, 3, '2020-03-04 12:34:56'); -- succeeds

insert into tbl_ps (UserId, VillageId, SubcategoryId, updatedatetime) 
  values (1, 2, 3, '2020-03-04 15:16:17'); -- fails!

См. Пример выполнения в db <> скрипка .

0 голосов
/ 09 июля 2020

Вы не можете использовать функцию в объявлении индекса. Итак, ваш запрос должен быть следующим:

ALTER TABLE tbl_ps 
ADD UNIQUE unique_index(UserId, VillageId, SubcategoryId, updatedatetime);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...