В рум он Включен PRAGMA foreign_keys=on; - по умолчанию а когда мы используем SQLiteOpenHelper нам он доступен или нужно включить?
Вот что получается:
db.execSQL(
"CREATE TABLE books(" +
"Id INTEGER PRIMARY KEY," +
"title TEXT NOT NULL," +
"count_page INTEGER NOT NULL CHECK (count_page >0)," +
"price REAL CHECK (price >0)," +
"auth_id INTEGER NOT NULL," +
"FOREIGN KEY (auth_id) REFERENCES auth(id));"
)
db.execSQL(
"CREATE TABLE auth(" +
"id INTEGER PRIMARY KEY," +
"name TEXT NOT NULL," +
"age INTEGER CHECK (age >16));"
)
db.execSQL(
"INSERT INTO auth (id, name, age)" +
"VALUES (1, 'Джек Лондон', 40);" +
"INSERT INTO auth (id, name, age)" +
"VALUES (2, 'Лев Толстой', 82);"
)
db.execSQL(
"INSERT INTO books (id, title, count_page, price, auth_id)" +
"VALUES (1, 'Белый клык', 287, 300.00, 1);" +
"INSERT INTO books (id, title, count_page, price, auth_id)" +
"VALUES (2, 'Война и мир', 806, 780.00, 2);"
)
db.execSQL(
"INSERT INTO books (id, title, count_page, price, auth_id)" +
"VALUES (3, 'Зов предков', 121, 160.00, 1);"
)
db.execSQL(
"INSERT INTO books (id, title, count_page, price, auth_id)" +
"VALUES (4, 'Белый клык', 121, 160.00, 3);"
)
Последняя запись также добавляется хотя не должна) так как auth_id != Auth.id