2017-07-26 26 views
0

私は外部キーのすべての以前の問題を読みました。私はすべての可能な設定をしましたが、動作させることはできません。 タイプテーブルにレコードがなくてもノードテーブルに挿入できます。しかし、私が知っているように、外部キー制約は、これが起こることを許すべきではありません。Sqliteの外部キーが機能しません

CREATE TABLE nodes(
id int NOT NULL PRIMARY KEY , 
ver int NOT NULL, 
lock int NOT NULL, 
title varchar(50) NOT NULL, 
typeid int NOT NULL REFERENCES types(id), 
desc text NOT NULL, 
CHECK(trim(id) <> '' AND trim(ver) <> '' AND trim(lock) <>'' AND trim(title) 
<> '' AND trim(typeid) <> '' AND trim(desc) <> '') 
) 

CREATE TABLE "types" 
("id" INTEGER PRIMARY KEY NOT NULL , 
"name" TEXT NOT NULL) 

SQLiteの3.19.3

sqlite> PRAGMA foreign_keys; 
foreign_keys 
------------ 
1 

sqlite> PRAGMA foreign_keys_list; 
sqlite> 

PRAGMA foreign_keys_list答えが空である理由を私は知りません。


私は私のコマンドで
正しいをsを使用するので解決される。PRAGMA foreign_key_list(nodes)

sqlite> PRAGMA foreign_key_list(nodes); 
id   seq   table  from  to   on_update on_delete match 
---------- ---------- ---------- ---------- ---------- ---------- -------- ------------ 
0   0   types  typeid  id   NO ACTION NO ACTION NONE 
+0

グーグルの 'sqliteプラグマの外部キーリスト'は何をしましたか? – philipxy

+0

私は外部キーを表示するはずですが、結果は空です。私は自分のノードテーブルに外部キーを定義します。 – AEF

+0

私のエラー、私は間違っています。 – philipxy

答えて

0

構文はPRAGMA foreign_key_list(table-name);

+0

私もそれをチェックします。結果は空です。私はそれが何かを示すべきだと思う。 PRAGMA foreign_key_list(nodes); – AEF

1

あるkey後にそのsを削除 - SQLiteは場合は警告を表示しません。タイプミスをして単純に何も返しません。

+0

あなたは正しいです。しかし、なぜ型テーブルにデータがなくても、ノードテーブルに何かを挿入することはできますか?この私の質問。なぜ私は何かエラーがないのですか? – AEF

関連する問題