MySQL INSERT具有两个不同的UNIQUE约束

时间:2013-05-02 12:08:18

标签: mysql unique-constraint

我创建了一个表:

CREATE TABLE userSessions (
  id INTEGER NOT NULL AUTO_INCREMENT,
  userId VARCHAR(50) NOT NULL,
  startTime TIMESTAMP NULL,
  endTime TIMESTAMP NULL,
  PRIMARY KEY (id),
  INDEX(startTime),
  INDEX(endTime),
  UNIQUE(userId, startTime),
  UNIQUE(userId, endTime)
);

我想知道,如果在startTime或endTime上插入一个具有重复键的行,它在哪个约束上是重复的。 有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

命名约束:

CREATE TABLE userSessions (
  id INTEGER NOT NULL AUTO_INCREMENT,
  userId VARCHAR(50) NOT NULL,
  startTime TIMESTAMP NULL,
  endTime TIMESTAMP NULL,
  PRIMARY KEY (id),
  INDEX(startTime),
  INDEX(endTime),
  UNIQUE idxStartTime(userId, startTime),
  UNIQUE idxEndTime(userId, endTime)
);

当插入失败时,错误将清楚地说明违反了哪个约束:

#1062 - Duplicate entry 'value' for key 'idxStartTime' 
相关问题