2012-12-20 2 views
3

웹 응용 프로그램에서 외래 키를 사용하려고합니다. SQL. 크롬에서 테스트했는데 .. 오류가 없습니다.하지만 수동으로 테이블 img (FK 포함)에 삽입 할 때
나는 실패 할 것으로 예상하지만 .. 삽입이 내 코드입니다 .. 여전히 SUCCES .. 좀 도와주세요 .. websql에서 외래 키가 작동하지 않는 이유는 무엇입니까?

tx.executeSql("PRAGMA foreign_keys = ON;");  
tx.executeSql("CREATE TABLE IF NOT EXISTS img (ID INTEGER PRIMARY KEY ASC,imgID VARCHAR, image VARCHAR, FOREIGN KEY (imgID) REFERENCES trans (ID))", []); 

나는 내 이미지 이름 데이터를 저장하고 트랜스 테이블에 연결하기위한 FK 방법을 사용하려고이 경우 ..

내 삽입 코드

tx.executeSql("insert into img (imgID,image) values ('100','23.jpg')"); 

답변

0

INSERTCREATE과 동일한 데이터베이스 연결에서 수행됩니까? PRAGMA foreign_keys = ON은 연결에 대해서만 유효합니다. 열려는 각 연결마다 실행되어야합니다.

that wouldn’t have any effect 이후 거래가 아닌 경우 PRAGMA 문을 실행해야합니다. tx.으로 시작하는 예제 코드는 문제의 원인임을 나타냅니다.

UPDATE 바와 같이 MisterSmith에 의해 코멘트에 지적, 크롬 기반 브라우저의 확장 그래서 외래 키 집행이 가능하지, 어쨌든 트랜잭션 외부에서 SQL 문을 실행할 수 없습니다.

따라서 애플리케이션 코드에서 외래 키가 무결성을 유지하는지 또는 triggers to enforce the foreign keys (Chromium 확장 프로그램에 트리거가 허용되는 경우)을 쓸 수 있어야합니다.

+0

답해 주셔서 감사합니다. –

+0

@AhWirayudha : 작동 했습니까? – Martijn

+0

PRAGMA는 일부 브라우저에서는 허용되지 않으므로 신뢰할 수있는 방법이라고 생각하지 않습니다. [여기] (http://code.google.com/p/chromium/issues/detail?id=57218)을 읽으십시오. –

관련 문제