Использование ON UPDATE ссылки на не первичный ключ не работает? - PullRequest
0 голосов
/ 13 января 2012

Две простые таблицы:

"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 голосов
/ 13 января 2012

Ваш PK должен быть "category. _id ", а не "category.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 
);"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...