回答

收藏

如何在SQLite中添加默认值?

技术问答 技术问答 216 人阅读 | 0 人回复 | 2023-09-14

我修改了一个表格,以这种方式向其中添加状态列- l4 I, Q& G! H
ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';* g! ?3 N$ g, ]& t9 l
但是,对于创建的任何新ITEM,SQLite似乎都不会将N添加到该列中。语法是否错误,或者SQLite及其对默认值的支持是否存在任何问题。
$ _- }# I1 d* T( N; M' w我正在使用SQLite 3.6.22
# X& A  b( P0 {/ Z7 W7 O               
2 R( t; Z6 k* k- h' J" P8 J解决方案:, p, f0 t& j3 Q* F( w6 Z( z/ _
               
& d: `: O1 j! W( M. V7 x# _" r, ?' g+ s8 v# v

; e6 o) ^) Z2 i; ^- e# w                对我来说看上去很好。 这是文档。# c2 [( y! v  H
sqlite> create table t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
+ a8 g, A7 }* Xsqlite> .table, D3 ^1 S0 V* i% r8 z  [: l) F/ s. @
t1
% T( |5 w0 C, G- ~& e- i5 ksqlite> .dump9 t. Y5 i, c% M0 r7 ]1 `8 H
PRAGMA foreign_keys=OFF;
# i- V, b: D, f7 r1 Y) fBEGIN TRANSACTION;
2 c6 X& r; \' o$ J+ BCREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
( `4 ^. h/ N. XCOMMIT;) W9 k$ E' E* c( D/ l$ W8 e8 P
sqlite> alter table t1 add column status varchar default 'N';
! J5 e% ^7 E) {sqlite> .dump
9 Q: p. i/ g. @% H3 |) B* ZPRAGMA foreign_keys=OFF;
: f- Y% H+ u0 e  o2 M4 d) vBEGIN TRANSACTION;8 N$ x* g' b6 r) h- @
CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE, status varchar default 'N');
# T$ P7 B  D' g7 n/ C* N& S! oCOMMIT;
# e3 V# a9 t0 o5 ?, @- |* usqlite> insert into t1 (name) values ("test");
+ e9 J# O! Q/ ?2 c1 csqlite> select * from t1;
+ \) V1 K7 g  W1|test||N
% D: B2 k; o% o& S3 L  Q1 T* J& Y$ M转储您的模式,并 在调用ALTER TABLE之后但在INSERT之前 验证 表结构是否存在。如果它在事务中,请 确保 在插入之前
5 D0 H/ ~+ r3 \: o. v提交事务3 u. Z7 ~- n1 R9 p) ]
$ sqlite3 test.db ".dump"
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则