0
Windows x64 Visual Studio 2010에서 Sqlite 3.7.11을 사용하고 있습니다. 아래 예제는 sqlite3.exe 도구에서 실행할 수 있습니다. 코드에서 같은 오류가 발생합니다.인용 된 값을 모호한 열 이름으로 거부하는 Sqlite
PRAGMA foreign_keys=ON;
CREATE TABLE hashes(id INTEGER PRIMARY KEY, hash CHARACTER(4) NOT NULL UNIQUE);
CREATE TABLE sources(id INTEGER PRIMARY KEY, source VARCHAR(64) NOT NULL UNIQUE);
CREATE TABLE files(hash_id INTEGER, source_id INTEGER, filename VARCHAR(2048), extension VARCHAR(16),
FOREIGN KEY(hash_id) REFERENCES hashes(id)
FOREIGN KEY(source_id) REFERENCES sources(id)
UNIQUE(hash_id, source_id, filename));
그리고이 초기 데이터 : :이 같은 행을 추가 해요
INSERT INTO hashes VALUES(?, "abcd");
INSERT INTO sources VALUES(?, "mysource");
이 테이블을 감안할 때. 파일 테이블은 위의 제한 조건에 따라 해쉬 및 소스 테이블을 참조합니다.
INSERT INTO files (hash_id, source_id, filename, extension)
SELECT hashes.id, sources.id, "filename.ext", "ext"
FROM hashes, sources
WHERE hashes.hash = "abcd" AND sources.source = "mysource";
'id'가 파일 이름 또는 확장 필드에 나타날 때까지 모든 것이 올바르게 작동합니다. 이것은 의미가 없습니다 - 인용되어 있습니다. 이러한 삽입은 모두 실패합니다
INSERT INTO files (hash_id, source_id, filename, extension)
SELECT hashes.id, sources.id, "id", ""
FROM hashes, sources
WHERE hashes.hash = "abcd" AND sources.source = "mysource";
INSERT INTO files (hash_id, source_id, filename, extension)
SELECT hashes.id, sources.id, "filename.id", "id"
FROM hashes, sources
WHERE hashes.hash = "abcd" AND sources.source = "mysource";
오류 : 모호한 열 이름 :
내가 더 어떻게 든 인용 값을 탈출해야합니까 ID를?
마지막 "id"는 어디에 속합니까? 무슨 칼럼이 "이드"라는거야? – Panagiotis
따옴표 붙은 "id"는 첫 번째 실패한 예제의 파일 이름이고 두 번째 실패한 예제의 확장자입니다. 삽입 후 리터럴 문자열 "id"가 열에 있어야합니다. – bolts
(파일 이름이 "filename.id"이고 확장자가 "id"인) where 절에 있어야하지 않습니까? – Panagiotis