2012-01-12 61 views
0

兩個簡單的表:對非主鍵使用ON UPDATE refference不起作用?

"CREATE TABLE categories(
_id integer primary key autoincrement, 
name text not null 
);" 

"CREATE TABLE expenses (" + 
"_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + 
"category_name TEXT REFERENCES categories(name) ON UPDATE CASCADE , " + 
"value FLOAT DEFAULT 0 NOT NULL, " + 
"date DATE DEFAULT (DATETIME('NOW')) NOT NULL 
);" 

我不知道爲什麼"UPDATE categories SET name='new name' WHERE _id=1"不會在費用表中的所有行更改CATEGORY_NAME。文件說它應該。

也許我引用的字段必須是主鍵?

回答

0

你的PK應該是「類別_id」而不是「categories.name」,這就是問題所在。

試試這個:

"CREATE TABLE expenses (" + 
"_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + 
"category_id integer REFERENCES categories(_id) , " + 
"value FLOAT DEFAULT 0 NOT NULL, " + 
"date DATE DEFAULT (DATETIME('NOW')) NOT NULL 
);" 
+0

媽的,我害怕這一點。這會弄亂我的應用很多:/ – 2012-01-13 11:22:38