mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
sqlite: enable foreign key constraints by default
For historical reasons and to maintain compatibibility with legacy
database schemas, SQLite does not enable foreign key constraints by
default. For new applications, however, this behavior is undesirable.
Currently, any application that wishes to use foreign keys must use
PRAGMA foreign_keys = ON;
to explicitly enable enforcement of such constraints.
This commit changes the behavior of the SQLite API built into Node.js
to enable foreign key constraints by default. This behavior can be
overridden by users to maintain compatibility with legacy database
schemas.
PR-URL: https://github.com/nodejs/node/pull/54777
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
1 parent
20d8b85d34
commit
a49abec6c3
4 files changed
+78
-3
No files matched your search
@@ -107,6 +107,11 @@ added: v22.5.0
|
||||
* `open` {boolean} If `true`, the database is opened by the constructor. When
|
||||
this value is `false`, the database must be opened via the `open()` method.
|
||||
**Default:** `true`.
|
||||
* `enableForeignKeyConstraints` {boolean} If `true`, foreign key constraints
|
||||
are enabled. This is recommended but can be disabled for compatibility with
|
||||
legacy database schemas. The enforcement of foreign key constraints can be
|
||||
enabled and disabled after opening the database using
|
||||
[`PRAGMA foreign_keys`][]. **Default:** `true`.
|
||||
|
||||
Constructs a new `DatabaseSync` instance.
|
||||
|
||||
@@ -317,6 +322,7 @@ exception.
|
||||
|
||||
[SQL injection]: https://en.wikipedia.org/wiki/SQL_injection
|
||||
[`--experimental-sqlite`]: cli.md#--experimental-sqlite
|
||||
[`PRAGMA foreign_keys`]: https://www.sqlite.org/pragma.html#pragma_foreign_keys
|
||||
[`sqlite3_changes64()`]: https://www.sqlite.org/c3ref/changes.html
|
||||
[`sqlite3_close_v2()`]: https://www.sqlite.org/c3ref/close.html
|
||||
[`sqlite3_exec()`]: https://www.sqlite.org/c3ref/exec.html
|
||||
|
||||
Reference in new issue
Block a user