[SQL] 무엇 외래 키 불일치 오류를 일으키는?
SQL무엇 외래 키 불일치 오류를 일으키는?
다음과 같이 나는 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 )
);
나는 ID # 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)
그것은 나에게 외래 키 불일치를 제공합니다. 환자 ID가 모든 경우에 '1', 그리고 날짜와 타입 코드는 2 층과 3 쿼리에 일치합니다. 나는 일치하지 무엇인지 이해하지 않지만, 사실은 외부 키 정의에 약간의 새로운 그리고 난 내가 잘못을하고있는 중이 야 모르겠어요.
해결법
-
==============================
1.나는 SQLite는 익숙하지 않아요하지만 조금 Google'ing이를 돌았 다. 문서를 말한다
나는 SQLite는 익숙하지 않아요하지만 조금 Google'ing이를 돌았 다. 문서를 말한다
나는 당신이 그 목록에 # 3으로 실행 될 수있다 생각한다.
다른 데시벨이 외래 키 참조로 비 고유 인덱스를 사용을 지원하는 반면 또한, 내 의견에 나쁜 디자인의 선택입니다, (여기에 대한 답변을 참조). 그래서 그 중 하나 구조 조정 것
난 당신이 이벤트와 읽기 모두 PatientId, 날짜 시간 및 EventTypeCode의 중복을 피할 수 있도록 # 2 건의 할 것입니다.
from https://stackoverflow.com/questions/5208245/what-is-causing-foreign-key-mismatch-error by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 문, SQL 및도록 SqlConnection을 사용하는 C #을 (0) | 2020.05.26 |
---|---|
[SQL] bind_param은 무엇을 수행합니까? (0) | 2020.05.26 |
[SQL] 항상합니까 '선택'프라이 머리 키를 기준으로 순서? (0) | 2020.05.26 |
[SQL] 어떻게 SQL 수평 데이터로 수직 데이터를 변환하는? (0) | 2020.05.26 |
[SQL] 어떻게 SQLite는 지난 삽입 ID를 얻으려면? (0) | 2020.05.26 |