4

Web SQLを使用してアプリで外部キーを使用しようとしています..Chromeでテストしています..エラーはありません..しかし、テーブルimg(FKを含む)に手動で挿入してテストすると
、失敗することが予想されます..しかし、挿入は成功します..これは私のコードです..助けてください..

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')");
4

1 に答える 1

0

INSERTと同じデータベース接続で実行されていCREATEますか? PRAGMA foreign_keys = ONは接続に対してのみ有効であるためです。開いた接続ごとに実行する必要があります。

また、トランザクションに参加していないときにその PRAGMA ステートメントを実行するようにしてください。これは効果がないためです。で始まるコード例tx.は、それが問題の原因であることを示唆しています。

更新MisterSmith のコメントで指摘されているように、Chromium ベースのブラウザの拡張機能はトランザクションの外で SQL ステートメントを実行できないため、外部キーの強制は不可能です。

そのため、外部キーがアプリケーション コードで整合性を維持していることを確認する必要があります。または、トリガーを記述して外部キーを強制することもできます(トリガーが Chromium 拡張機能に許可されている場合)。

于 2012-12-20T17:05:01.653 に答える