如何在MySQL中指定复合唯一约束

时间:2015-04-16 10:40:19

标签: mysql sql unique-constraint

我有一个表daily_ward条目,其中包含以下列

daily_ward
-------------
services integer
ipd_patient_id integer
date_time datetime

现在我想限制服务= 1的服务每天一个条目。

我的date_time字段也包含时间,服务包含许多服务。

因此我不能马上添加一个独特的索引。

我应该怎么做?

1 个答案:

答案 0 :(得分:1)

哦,这太伤心了。您无法使用您拥有的数据类型在MySQL中执行此操作。以下是三种选择。

首先是将日期和时间分成两列:

  • 约会日期
  • 时间

(您应该提供更好的名称。)然后在servicesdate列上创建唯一索引。

第二种是以ISO标准格式存储日期/时间:" YYYY-MM-DD HH:MM:SS"通常就足够了:

  • datetime_str char(19)

然后使用前缀

构建索引
create unique index idx_daily_ward_services_day on (services, left(datetime_str, 10));

最后,您可以添加另一个名为date的列,并使用触发器填充它。

鉴于表的名称是" daily_ward",我倾向于选择第一个解决方案。 " date"似乎是实体所代表的重要组成部分。