2013-07-23 1 views
1

저녁 모두구문 ScanID 근처의 오류

저는 작은 응용 프로그램에서 작업하고 있지만 SQLite 외래 키 제약 조건에 걸려 들었습니다. 기본적으로 내가 뭘해야하는 것은 그런 다음 "ScanHistorytable"

CREATE TABLE tblScanHistory (
ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT, 
HostID INTEGER, 
FOREIGN KEY(HostID) REFERENCES tblHostLookup(HostID), 
ScanID INTEGER, 
FOREIGN KEY(ScanID) REFERENCES tblScanLookup(ScanID)); 
으로 두 테이블 사이의 매핑이됩니다 다른 테이블이

CREATE TABLE tblScanLookup ( 
ScanID INTEGER PRIMARY KEY AUTOINCREMENT, 
ScanDate TEXT); 

CREATE TABLE tblHostLookup ( 
HostID INTEGER PRIMARY KEY AUTOINCREMENT, 
HostName TEXT); 

그리고 하나 "ScanLookuptable"하나 "HostLookuptable"입니다

는하지만 난

Syntax error near ScanID 
말하는 오류가 계속

왜 그렇습니까? 우리는 테이블에 둘 이상의 외래 키를 가질 수 없습니까? 이와 관련하여 도움이 될 것입니다.

감사

+0

이 외부 키 제한의 경우, 호스트 ID 외래 키를 제거하는 시도하고 무슨 일이 일어 나는지. –

+0

@MarcB 하나의 외래 키로 완벽하게 작동하지만 ... 우리는 심각하게 하나 이상의 외래 키를 가질 수 없습니까? – user9517536248

+0

FK (http://www.sqlite.org/foreignkeys.html)의 수 제한에 대해 언급 한 내용이 없으므로 구문 분석 오류를 일으킬 수있는 보이지 않는 문자가 있는지 확인하기 시작하십시오. 첫 번째 HostID 외래 키 행 뒤. 전체 create query를 다시 입력 해보십시오. –

답변

1

당신은 테이블 컬럼과 테이블 제약을 혼합 할 수 없습니다; 제약 조건은 모든 열 뒤에 나열해야합니다

CREATE TABLE tblScanHistory (
    ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT, 
    HostID INTEGER, 
    ScanID INTEGER, 
    FOREIGN KEY(HostID) REFERENCES tblHostLookup(HostID), 
    FOREIGN KEY(ScanID) REFERENCES tblScanLookup(ScanID) 
); 

또는 간단한 :

CREATE TABLE tblScanHistory (
    ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT, 
    HostID INTEGER REFERENCES tblHostLookup(HostID), 
    ScanID INTEGER REFERENCES tblScanLookup(ScanID) 
); 
+0

고마워요. 사람이 ... 이상하게 생각했지만, 모든 열은 외래 키로 남아 있어야합니다. 그럼에도 불구하고 그것을 지워 줘서 고마워요. – user9517536248

+0

두 번째 형식에서 FK * 질문을하려면 질문 버튼을 사용하십시오 –

+0

도움 주셔서 감사합니다 ... 다른 질문에 대해 귀찮게하지 않습니다. 직접 해결했습니다. – user9517536248