Что вызывает ошибку несоответствия внешнего ключа?

У меня есть база данных sqlite со следующей структурой:

CREATE TABLE IF NOT EXISTS Patient 
( PatientId INTEGER PRIMARY KEY AUTOINCREMENT );

CREATE TABLE IF NOT EXISTS Event 
( 
PatientId INTEGER REFERENCES Patient( PatientId ),
DateTime TEXT,
EventTypeCode TEXT,
PRIMARY KEY( PatientId, DateTime, EventTypeCode )
);

CREATE TABLE IF NOT EXISTS Reading 
( 
PatientId INTEGER REFERENCES Patient( PatientId ),
DateTime TEXT REFERENCES Event (DateTime),
EventTypeCode TEXT REFERENCES Event (EventTypeCode),
Value REAL,
PRIMARY KEY( PatientId, DateTime, EventTypeCode )
);

Я вставляю пациента с идентификатором № 1

, затем запускаю:

INSERT INTO Event (PatientId, DateTime, EventTypeCode) VALUES (1, '2011-01-23 19:26:59', 'R')

, который работает

затем бегу:

INSERT INTO Reading (PatientId, DateTime, EventTypeCode, Value) VALUES (1, '2011-01-23 19:26:59', 'R', 7.9)

, и это дает мне несоответствие внешнего ключа. Идентификатор пациента - «1» во всех случаях, а дата, время и коды типов совпадают во 2-м и 3-м запросах. Я не понимаю, что не совпадает, но я немного новичок в определении внешних ключей, и я не знаю, что делаю неправильно.

12
задан Damon 6 March 2011 в 02:29
поделиться