使用ON UPDATE引用非主键不起作用?

时间:2012-01-12 22:18:36

标签: android sqlite

两个简单的表格:

"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。文档说它应该。

也许我正在引用的字段必须是主键?

1 个答案:

答案 0 :(得分: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 
);"