是否可以仅使用datetime列中的日期作为参数之一来创建UNIQUE KEY?

时间:2014-09-18 11:30:38

标签: mysql sql datetime unique

这是我试图执行的查询,但它无法正常工作。

ALTER TABLE values ADD UNIQUE(id_cod, id_op, (SELECT date(V.completed_date) FROM values V;));

我在值表中有以下3列:id_codid_opcompleted_date我想用于UNIQUE KEY,但对我来说这对我来说至关重要仅使用日期时间的日期部分。

2 个答案:

答案 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))

我认为第二种选择是最合理的。