修改sqlite字段类型

在单机版部署的环境中,在软件升级时,对数据库的修改一般是用 SQL 语句来实现(不可能叫客户用 SQLite Expert 自己修改吧),本来用 SQL 语句修改字段不是啥复杂的事,举例如下:

-- 增加字段
ALTER TABLE Cftea_table Add column_name new_data_type

-- 删除字段
ALTER TABLE Cftea_table DROP COLUMN column_name

-- 修改字段类型
ALTER TABLE Cftea_table ALTER COLUMN column_name new_data_type

但是在 SQLite 中却不能这么做,因为 SQLite 目前还不支持直接修改字段。

只有变通处理如下:

-- 把原表改成另外一个名字作为暂存表
ALTER TABLE old_table_name RENAME TO temp_table_name;

-- 如果需要,可以删除原表的索引
DROP INDEX ix_name;

-- 用原表的名字创建新表
CREATE TABLE old_table_name(field_name INTEGER PRIMARY KEY AUTOINCREMENT, other_field_name text not null);

-- 如果需要,可以创建新表的索引
CREATE INDEX ix_name ON old_table_name(field_name);

-- 将暂存表数据写入到新表,很方便的是不需要去理会自动增长的 ID
INSERT INTO old_table_name SELECT * FROM temp_table_name

-- 删除暂存表
DROP TABLE temp_table_name;
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值