我创建了一个表:
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上插入一个具有重复键的行,它在哪个约束上是重复的。 有谁知道怎么做?
答案 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'