У меня есть таблица с составным первичным ключом, и у меня возникают проблемы при вставке.Код, используемый для создания таблицы:
CREATE TABLE ClassEvent (
EventName varchar(10) NOT NULL,
CourseId varchar(10) NOT NULL,
EventType varchar(20),
EventWeight number(3),
DueDate DATE NOT NULL,
FOREIGN KEY (CourseId) REFERENCES Courses(CourseId),
PRIMARY KEY (CourseId, EventName));
Проблема, с которой я сталкиваюсь, заключается в том, что я хочу вставить записи, значения которых могут быть не уникальными для столбцов CourseId или EventName, но представляют собой уникальную комбинациюиз 2. Например, если я пытаюсь запустить следующие 2 вставки:
INSERT INTO ClassEvent VALUES('Assignment 1','60-415','Assignment',10,'12/10/2010');
INSERT INTO ClassEvent VALUES('Project 1','60-415','Project',15,'5/12/2010');
я получаю следующую ошибку:
Error: columns CourseId, EventName are not unique.
, и вторая вставка не делает его вБД.Почему эта ошибка выходит?Я думал, что составной первичный ключ требует, чтобы комбинация обоих значений была уникальной.В моих вставках выше значения для столбца EventName отличаются, даже если значения для CourseId одинаковы.Разве это не должно рассматриваться как 2 уникальные комбинации и, следовательно, 2 разных первичных ключа?
В моей таблице должно быть несколько разных событий для каждого идентификатора курса, но каждое событие должно быть уникальным для каждого курса.Мне нужно иметь возможность вставлять значения в таблицу, например:
EventName CourseId Назначение 1 60-415 Проект 1 60-415 Назначение2 60-415 Проект 2 60-415 Назначение 1 60-367 Проект 1 60-367
и так далее.Может кто-нибудь сказать мне, как я могу заставить это работать?Почему эти составные ПК не рассматриваются как уникальные записи?Любая помощь приветствуется.
Вот java-функция, которую я использую для вставки:
public void addNewClassEvent(ContentValues values) {
SQLiteDatabase db = openConnection();
db.insert("ClassEvent", null, values);
db.close();
}
Может ли это быть причиной проблемы?