这是我试图执行的查询,但它无法正常工作。
ALTER TABLE values ADD UNIQUE(id_cod, id_op, (SELECT date(V.completed_date) FROM values V;));
我在值表中有以下3列:id_cod
,id_op
和completed_date
我想用于UNIQUE KEY
,但对我来说这对我来说至关重要仅使用日期时间的日期部分。
答案 0 :(得分:1)
你不能在MySQL中这样做。
您可以添加第四列completed_date_d DATE
,将其包含在唯一约束中并制作一个触发器,以使用completed_date
的日期部分更新列。
答案 1 :(得分:1)
你有三种选择,其中没有一种是很好的选择。
第一个是为日期添加一个单独的列。您可以使用触发器维护它,然后使用该列创建唯一索引。
您可以将列拆分为两部分,即日期和时间。然后只使用索引的日期部分。
您可以使用格式YYYY-MM-DD HH:MM:SS将字段表示为字符串。然后,您可以在此字段上使用前缀索引:create unique index idx_values_3 on values(id_code, id_op, datestr(10))
。
我认为第二种选择是最合理的。