0

我创建了一个表:

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 上。有谁知道该怎么做?

4

1 回答 1

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' 
于 2013-05-02T12:15:27.290 回答