Quantcast
Channel: Active questions tagged ruby - Stack Overflow
Viewing all articles
Browse latest Browse all 4631

SQLite3 "forgets" to use foreign keys

$
0
0

I'm using Ruby with SQLite3 and my attempts to use foreign keys in Sqlite3 were unfortunately not successful. According to sqlite3 --version, version 3.7.13 is installed. As far as I know, Sqlite3 supports foreign keys since version 3.6.x.

I know that foreign keys are deactivated by default and have to be activated with PRAGMA foreign_keys = ON;. In my Ruby db-create-script, I'm doing something like this:

sql = <<-SQL  PRAGMA foreign_keys = ON;  CREATE TABLE apps (    id ....  );  CREATE TABLE requests (    ...    app_id INTEGER NOT NULL,    FOREIGN KEY(app_id) REFERENCES apps(id),  );  ...SQLdb.execute_batch(sql)

Unfortunately, I can happily insert rows into requests with unknown app-ids, it works, but of course it shouldn't.

Interesting: using the sqlite3 shell directly, I can observe the following behaviour:

$ sqlite3 database.dbsqlite> PRAGMA foreign_keys = ON;sqlite> PRAGMA foreign_keys;1 // as expectedsqlite> .quit$ sqlite3 database.dbsqlite> PRAGMA foreign_keys;0 // off ?!

Without quitting the sqlite3 shell, foreign keys are working after activating them (and not quitting the shell) and I'm not allowed to insert rows with unknown app_ids.


Viewing all articles
Browse latest Browse all 4631

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>