两个简单的表格:
"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 :(得分: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
);"