为了账号安全,请及时绑定邮箱和手机立即绑定

sqlite sql 修改字段类型

sqlite sql 修改字段类型

德玛西亚99 2019-04-14 08:08:38
表结构如下:CREATE TABLE [ElemProp] ([_idElemProp] GUID DEFAULT ('{' || hex( randomblob(4)) || '-' || hex( randomblob(2)) || '-' || '4' || substr( hex( randomblob(2)), 2) || '-' || substr('AB89', 1 + (abs(random()) % 4) , 1) || substr(hex(randomblob(2)), 2) || '-' || hex(randomblob(6)) || '}'), [_ridElem] GUID, [_sElemPropName] VARCHAR DEFAULT (''), [_sElemPropCatName] VARCHAR DEFAULT (''), [_nElemPropValidRule] INTEGER DEFAULT (0), [_dElemPropMaxVal] DOUBLE DEFAULT (0), [_dElemPropMinVal] DOUBLE DEFAULT (0), [_nElemPropCtrlFlag] INTEGER DEFAULT (0), [_nElemPropOrder] DOUBLE DEFAULT (0), UNIQUE([_ridElem], [_sElemPropName]) ON CONFLICT IGNORE, CONSTRAINT [sqlite_autoindex_ElemProp_2] PRIMARY KEY ([_idElemProp]));CREATE INDEX [ElemPropIndex] ON [ElemProp] ([_sElemPropName], [_ridElem]);CREATE TRIGGER [DeletedLinkedElemPropVal]AFTER DELETEON [ElemProp]BEGINDELETE FROM [ElemPropVal] where [ElemPropVal].[_ridElemProp] = old.[_idElemProp];END;其中_nElemPropOrder的字段类型错了,我想修改成integer,于是写下sql如下alter table [ElemProp] alter column [_nElemPropOrder] INTEGER DEFAULT (0);但是执行总提示在alter附近有误,请高手指点一下,谢谢
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

sqlite数据库中数据类型存在sqlite_master表中
select sql from sqlite_master where tb_name='tbname'
把这条sql语句改了,表结构就改了。
sqlite的alter table限制很多,所以一般直接把原表改名。
复制一个表名与原表一样的,再把改名后的那个原表删了,以下sql语句可以用。
新表改完字段类型如果不兼容原表,新表中的该字段数据读不出。
所以要改类型可以不用声明字段类型
begin
alter table zb RENAME TO tempxxx_1
create table zb(rkdh char(15) ,gbdh char(15) ,cph nchar(9) )
INSERT INTO zb(rkdh,gbdh,cph,) select rkdh,gbdh,cph FROM tempxxx_1
drop table tempXXX_1
commit

查看完整回答
反对 回复 2019-04-15
?
倚天杖

TA贡献1828条经验 获得超3个赞

名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。
改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名
增加一列 - ALTER TABLE 表名 ADD COLUMN 列名 数据类型 限定符

查看完整回答
反对 回复 2019-04-15
  • 2 回答
  • 0 关注
  • 1503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信