表结构如下: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
倚天杖
TA贡献1828条经验 获得超3个赞
名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。
改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名
增加一列 - ALTER TABLE 表名 ADD COLUMN 列名 数据类型 限定符
- 2 回答
- 0 关注
- 1503 浏览
添加回答
举报
0/150
提交
取消