sqlite sql 修改字段类型

时间:2013.09.10 发布人:shuaiyongjie

sqlite sql 修改字段类型

已解决问题

谷歌shuaiyongjie用户在2013.09.10提交了关于“神雕侠侣sqlite sql 修改字段类型”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-31T18:01:39。表结构如下:
CREATETABLE[ElemProp](
[_idElemProp]GUIDDEFAULT('{'||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]VARCh**ARDEFAULT(''),
[_sElemPropCatName]VARCh**ARDEFAULT(''),
[_nElemPropValidRule]INTEGERDEFAULT(0),
[_dElemPropMaxVal]DOUBLEDEFAULT(0),
[_dElemPropMinVal]DOUBLEDEFAULT(0),
[_nElemPropCtrlFlag]INTEGERDEFAULT(0),[_nElemPropOrder]DOUBLEDEFAULT(0),
UNIQUE([_ridElem],[_sElemPropName])ONCONFLICTIGNORE,
CONSTRAINT[sqlite_autoindex_ElemProp_2]PRIMARYKEY([_idElemProp]));

CREATEINDEX[ElemPropIndex]ON[ElemProp]([_sElemPropName],[_ridElem]);

CREATETRIGGER[DeletedLinkedElemPropVal]
AFTERDELETE
ON[ElemProp]
BEGIN
DELETEFROM[ElemPropVal]where[ElemPropVal].[_ridElemProp]=old.[_idElemProp];
END;
其中
_nElemPropOrder的字段类型错了,我想修改成integer,于是写下sql如下
altertable[ElemProp]
altercolumn[_nElemPropOrder]INTEGERDEFAULT(0);
但是执行总提示在alter附近有误,请高手指点一下,谢谢希望大家能够帮助她。

详细问题描述及疑问:表结构如下:
CREATETABLE[ElemProp](
[_idElemProp]GUIDDEFAULT('{'||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]VARCh**ARDEFAULT(''),
[_sElemPropCatName]VARCh**ARDEFAULT(''),
[_nElemPropValidRule]INTEGERDEFAULT(0),
[_dElemPropMaxVal]DOUBLEDEFAULT(0),
[_dElemPropMinVal]DOUBLEDEFAULT(0),
[_nElemPropCtrlFlag]INTEGERDEFAULT(0),[_nElemPropOrder]DOUBLEDEFAULT(0),
UNIQUE([_ridElem],[_sElemPropName])ONCONFLICTIGNORE,
CONSTRAINT[sqlite_autoindex_ElemProp_2]PRIMARYKEY([_idElemProp]));

CREATEINDEX[ElemPropIndex]ON[ElemProp]([_sElemPropName],[_ridElem]);

CREATETRIGGER[DeletedLinkedElemPropVal]
AFTERDELETE
ON[ElemProp]
BEGIN
DELETEFROM[ElemPropVal]where[ElemPropVal].[_ridElemProp]=old.[_idElemProp];
END;
其中
_nElemPropOrder的字段类型错了,我想修改成integer,于是写下sql如下
altertable[ElemProp]
altercolumn[_nElemPropOrder]INTEGERDEFAULT(0);
但是执行总提示在alter附近有误,请高手指点一下,谢谢期待您的答案,你就是当代的活雷锋,太感谢了 !

希望以下的回答,能够帮助你。

第1个回答

用户名:om**7713  

SQLite仅仅支乎特与型积解态吃节亮决持ALTERTABLE语句的一部分功能,我们可以用ALTERTABLE语句来更改一个表的名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段温的名称、**类型、限定符等斗得还城在历拿化助牛等。
改变表名-ALTERTABLE旧表名RENAMETO新表名
增加一列-ALTERTABLE表名ADDCOLUMN列名**类型限定符
**表结构变了就要重建表,好像有其他方法解决,但这偶就不知道了