【问题标题】:MySQL `unique_index` with datetime giving errorMySQL `unique_index` 与 datetime 给出错误
【发布时间】:2020-07-09 19:03:19
【问题描述】:
ALTER TABLE tbl_ps ADD UNIQUE 
`unique_index`(`UserId`,`VillageId`,`SubcategoryId`,date(updatedatetime) 

给出错误

【问题讨论】:

  • 错误是什么?
  • 用户不能在该村当天进入
  • 是缺少括号还是只有我一个人?
  • 缺少括号和错误消息以供进一步调试。

标签: mysql unique-index


【解决方案1】:

您不能在索引声明中使用函数。所以你的查询应该是下一个:

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

【讨论】:

    【解决方案2】:

    功能索引在 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<>fiddle 的运行示例。

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 2023-03-22
      • 2018-04-14
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2015-07-02
      • 2014-12-21
      相关资源
      最近更新 更多