回答

收藏

如何在SQLite中添加默认值?

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

我修改了一个表格,以这种方式向其中添加状态列  Z/ W- Z$ R5 v/ `* \% F
ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';8 D3 r+ |# f) O& j
但是,对于创建的任何新ITEM,SQLite似乎都不会将N添加到该列中。语法是否错误,或者SQLite及其对默认值的支持是否存在任何问题。
( _; Y) h) V0 v4 g. H4 v8 j0 w' |我正在使用SQLite 3.6.22
9 l- K" j% N: O( i& \, L4 f6 K4 h' w                . l2 X$ B6 e* I0 D2 }
解决方案:
0 L3 x* X& w7 w1 k5 [               
# O. z* E' G1 G2 Z2 J2 p
0 s; S  F+ O2 V4 z2 r9 {
8 y5 d+ V* w, ?                对我来说看上去很好。 这是文档。
4 J$ O9 M: P- a/ Z8 g/ ~. K$ }sqlite> create table t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
1 ]$ {+ Q- _3 x3 h2 @$ Jsqlite> .table
% I( C$ b' G- \! M/ e! f" Ot17 r# N7 @! {+ O. U% {0 P
sqlite> .dump) ]- w% n* K( ?) f6 U* k" G
PRAGMA foreign_keys=OFF;
* d) d; k+ Z3 m% c, ?8 m4 F% OBEGIN TRANSACTION;
3 {1 K: P# X- CCREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
/ I$ E1 N3 `1 U2 @5 f; BCOMMIT;
  V' V8 T2 s: n. i1 O) dsqlite> alter table t1 add column status varchar default 'N';; ^4 d9 h2 T+ m, W4 b, [
sqlite> .dump8 b0 s4 }/ c8 \  R, \" L
PRAGMA foreign_keys=OFF;% Q) {" `$ c9 {1 G
BEGIN TRANSACTION;' _- I/ a' Z( U/ r0 d/ k
CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE, status varchar default 'N');
# s" f- J8 H9 I; A: @( TCOMMIT;
, f. g  u) R( I6 q, U3 [) fsqlite> insert into t1 (name) values ("test");* F4 k3 N9 z- I" J& }# ^2 o6 G
sqlite> select * from t1;
' n% l* {% K, |' Q& `, z6 n1|test||N
1 Z& l& D8 H' H转储您的模式,并 在调用ALTER TABLE之后但在INSERT之前 验证 表结构是否存在。如果它在事务中,请 确保 在插入之前3 u2 _  Y& t8 `1 F- J
提交事务
6 G# B) J# G. y  h9 j* R$ sqlite3 test.db ".dump"
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则