回答

收藏

如何在SQLite中添加默认值?

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

我修改了一个表格,以这种方式向其中添加状态列5 F5 O- G9 j: w: _+ p5 Z
ALTER TABLE ITEM ADD COLUMN STATUS VARCHAR DEFAULT 'N';
3 B" M( T! o" b, J" `但是,对于创建的任何新ITEM,SQLite似乎都不会将N添加到该列中。语法是否错误,或者SQLite及其对默认值的支持是否存在任何问题。" e+ l2 R3 S/ `) O. ^/ a/ U7 ?
我正在使用SQLite 3.6.229 ~- G& r! Y) _& [
                2 p/ H  \# A; k, M" x8 N$ M) V
解决方案:
+ h2 _. ~( g1 V7 `. v) K, W               
& F& N0 t$ z0 \& a- @
$ T; e2 A6 ]# ~, E0 F5 w# r% g/ r7 ]# t/ E7 ]
                对我来说看上去很好。 这是文档。
, a4 w& s8 S( p" `7 n. E, p  c5 hsqlite> create table t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
; R% a5 R) q* M# Psqlite> .table; `) z4 h, e6 D$ M7 B' j
t14 _; H: K) J6 X" u/ s2 u9 s
sqlite> .dump% i* |; j) j9 F  Z4 G) g! s: Q
PRAGMA foreign_keys=OFF;
7 r8 X% S2 p% X; j) t. ^BEGIN TRANSACTION;. J+ @2 `- k$ k
CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE);
" E" Z2 V, q" yCOMMIT;
0 {9 o" Q) o0 T! z& o+ s; [7 F" gsqlite> alter table t1 add column status varchar default 'N';
( [& V# u: [9 r" psqlite> .dump9 k. S4 r( a1 M1 c* [5 T: e& i
PRAGMA foreign_keys=OFF;
7 ?+ N$ N3 d3 `$ }& ?6 ^BEGIN TRANSACTION;1 x" y) |% D. X! _; G" `; h9 S
CREATE TABLE t1 (id INTEGER PRIMARY KEY, name TEXT, created DATE, status varchar default 'N');1 E! F$ I' M" F) j
COMMIT;
8 {+ i# B1 q. X; O7 \- wsqlite> insert into t1 (name) values ("test");
  ~% Y& r9 q( q4 p: O- Q, t3 |5 X& Usqlite> select * from t1;+ F  D5 C& ~& a* }
1|test||N
0 e$ R( m7 R- Z4 P转储您的模式,并 在调用ALTER TABLE之后但在INSERT之前 验证 表结构是否存在。如果它在事务中,请 确保 在插入之前
2 a8 r3 S# d. u提交事务
" q/ p) Q7 K/ G6 f6 k7 h6 z$ sqlite3 test.db ".dump"
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则