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

How do I specify a composite unique constraint in MySQL

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

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

现在我想限制每天为服务 =1 的服务输入一次。

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

因此我无法立即添加唯一索引。

我该怎么办?

哦,这太可悲了。您不能在 MySQL 中使用您拥有的数据类型执行此操作。这里有三种选择。

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

  • 日期日期
  • 时间时间

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

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

  • datetime_str 字符(19)

然后使用前缀建立索引:

create unique index idx_daily_ward_services_day on (services, left(datetime_str, 10));

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

鉴于 table 的名称是 "daily_ward",我倾向于采用第一种解决方案。 "date" 似乎是实体所代表的重要部分。