猿问

sqlite sql 修改字段类型

表结构如下:
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 DELETE
ON [ElemProp]
BEGIN
DELETE FROM [ElemPropVal] where [ElemPropVal].[_ridElemProp] = old.[_idElemProp];
END;
其中
_nElemPropOrder的字段类型错了,我想修改成integer,于是写下sql如下
alter table [ElemProp] 
alter column [_nElemPropOrder] INTEGER DEFAULT (0);
但是执行总提示在alter附近有误,请高手指点一下,谢谢

德玛西亚99
浏览 1504回答 2
2回答

有只小跳蛙

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

倚天杖

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

相关分类

SQL Server
我要回答