33

themequizの2 つのテーブルがあります。これらの定義は次のとおりです。

    CREATE TABLE "theme" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "nom" VARCHAR NOT NULL );

CREATE TABLE quiz(

     id              INTEGER PRIMARY KEY,
     nom         VARCHAR(256) NOT NULL,
     theme      INTEGER NOT NULL,
     niveau      INTEGER NOT NULL,
     pass          INTEGER DEFAULT 1  NOT NULL,
     jok            INTEGER DEFAULT 1 NOT NULL,
    etat            INTEGER DEFAULT 0 NOT NULL,
    FOREIGN KEY (theme) REFERENCES theme(id)
);

テーブルテーマのフィールドid(主キー)はクイズテーブルの aです。たとえば、値 30 を外部キーとして含むテーブル クイズにレコードを挿入しようとすると、テーマ テーブルに のレコードがないにもかかわらず、レコードがテーブルに正常に挿入されます。つまり、想定されていませんでした。外部キー制約があったため、この挿入を阻止するには?Foreign Keyquizid = 30

4

1 に答える 1

62

外部キーのサポートが有効になっていますか?

ライブラリが外部キー制約を有効にしてコンパイルされていると仮定すると、PRAGMAforeign_keys コマンドを使用して、実行時にアプリケーションで有効にする必要があります。例えば:

sqlite> PRAGMA foreign_keys = ON;
于 2012-02-24T15:53:43.390 に答える