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'