MySQL INSERT с двумя разными УНИКАЛЬНЫМИ ограничениями

У меня есть таблица, созданная с:

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 ответ

Решение

Назовите ограничения:

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' 
Другие вопросы по тегам