我正在尝试根据this page对require a datatype on every table column and enforce those types.
启用严格模式。
$ sqlite3 ./a_new_database.sqlite
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> PRAGMA strict=ON;
sqlite> CREATE TABLE yay ( col1 TEXT, col2 INT );
sqlite> INSERT INTO yay ( col1, col2 ) VALUES ("this works", "this is the wrong type");
sqlite> SELECT * from yay;
this works|this is the wrong type
sqlite>
$
我不仅可以INSERT
错误的数据类型,我也可以SELECT
它。
我试过PRAGMA strict=ON;
和PRAGMA strict=1;
。都不起作用。我想我没有正确地启用严格模式。
如何正确启用严格模式?
2条答案
按热度按时间fdbelqdn1#
根据documentation,您将
STRICT
添加到表声明的末尾:需要注意的是,这是SQLite 3.37.0版的新功能。在任何以前版本的SQLite上,表创建都将失败。并且任何以前版本都将无法打开使用此标志创建的数据库文件,并显示“malformed database schema”错误,除非在打开数据库之前指定
PRAGMA writable_schema=ON
pragma。您可以在旧版本的SQLite上使用类似的CHECK约束概念:
bq3bfh9z2#
根据文档,STRICT表仅在3.37或更高版本的sqlite3中受支持