1

私は次のバグで歯を磨いてきました:

いくつかのテーブルを定義していますが、そのうちの2つは値「task_id」を共有する必要があります。コードで次のcreateステートメントを使用しています。

// SQL Statement to create new Tasks table
private static final String TASKS_TABLE_CREATE = "create table " + TASKS_TABLE
    + (" (" + KEY_TASKS_TASKID + " integer primary key autoincrement, ")
    + (KEY_TASKS_TASK + " TEXT, ")
    + (KEY_TASKS_SESSION + " TEXT, ")
    + (KEY_TASKS_CONDITION + " TEXT);");
// SQL Statement to create new RAT table
private static final String RAT_TABLE_CREATE = "create table " + RAT_TABLE
    + (" (" + KEY_ID + " integer primary key autoincrement, ")
    + (KEY_RAT_TIMESTAMP + " DATETIME DEFAULT null, ")
    + (KEY_RAT_TASKID + " INTEGER NOT NULL, ")
    + ("FOREIGN KEY(" + KEY_RAT_TASKID + ") REFERENCES ")
    + (TASKS_TABLE + "(" + KEY_TASKS_TASKID + "), ")
    + (KEY_RAT_SESSION + " TEXT DEFAULT null, ")
    + (KEY_RAT_RAT_A + " TEXT DEFAULT null, ")
    + (KEY_RAT_RAT_B + " TEXT DEFAULT null, ")
    + (KEY_RAT_RAT_C + " TEXT DEFAULT null, ")
    + (KEY_RAT_ANSWER + " TEXT DEFAULT null, ")
    + (KEY_RAT_CONDITION + " TEXT DEFAULT null);");

次のようなSQL例外が発生します。

06-26 20:24:49.759:E / Database(17404):'create table rat(_id integer primary key autoincrement、timeStamp DATETIME DEFAULT null、taskId INTEGER NOT NULL、外部キー(taskId)REFERENCESタスク(taskId)、セッションTEXT DEFAULT null、ratA TEXT DEFAULT null、ratB TEXT DEFAULT null、ratC TEXT DEFAULT null、回答TEXT DEFAULT null、条件TEXT DEFAULT null);'。

調べてみましたが、特定の問題に対処するものが見つかりません。'create'ステートメントのどこで外部キーを参照できるかについての制約はありますか?この問題について助けてくれてありがとう。

4

1 に答える 1

1

ステートメントは次のようにフォーマットする必要があると思います。

col_name1 TEXT REFERENCES table_name ( col_name2 )

だからあなたは試すことができます:

KEY_RAT_TASKID + " REFERENCES " + TASKS_TABLE + "(" + KEY_TASKS_TASKID + ")"
于 2012-06-27T01:56:40.760 に答える