MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > SQLite修改字段类型

SQLite如何修改字段类型

作者:秋·风

这篇文章主要介绍了SQLite修改字段类型的方法,SQLite不支持直接修改字段类型,如需要修改字段类型,本文给大家分享相关方法处理,需要的朋友可以参考下

SQLite不支持直接修改字段类型,如需要修改字段类型,可按以下方法处理:
1、将要修改的字段名改名
2、用新的类型添加字段
3、复制原字段的内容
4、删除旧字段

procedure SQLiteAlter(TableName,ColName,NewFileType:string);
  var sql:string;
  begin
    sql:='ALTER TABLE '+TableName+' RENAME COLUMN '+chr(39)+ColName+chr(39)+' TO '+chr(39)+ColName+'_old'+chr(39);
    UniSQL1.SQL.Text:=sql;
    UniSQL1.Execute;
    sql:='ALTER TABLE '+TableName+' ADD COLUMN '+ColName+' '+ NewFileType;
    UniSQL1.SQL.Text:=sql;
    UniSQL1.Execute;
    sql:='UPDATE '+TableName+' SET '+ColName+' = CAST('+ColName+'_old AS '+NewFileType+')';
    UniSQL1.SQL.Text:=sql;
    UniSQL1.Execute;
    sql:='ALTER TABLE '+TableName+' DROP COLUMN '+ColName+'_old';
    UniSQL1.SQL.Text:=sql;
    UniSQL1.Execute;
  end;
  //Demo:
  SQLiteAlter('blog_Content','TestFieldName','nvarchar(50)');

补充:sqlite sql 修改字段类型

sqlite数据库中数据类型存在sqlite_master表中

select sql from sqlite_master where tb_name='tbname'

把这条sql语句改了,表结构就改了。
sqlite的alter table限制很多,所以一般直接把原表改名。
复制一个表名与原表一样的,再把改名后的那个原表删了,以下sql语句可以用。
新表改完字段类型如果不兼容原表,新表中的该字段数据读不出。
所以要改类型可以不用声明字段类型

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

到此这篇关于SQLite修改字段类型的方法的文章就介绍到这了,更多相关SQLite修改字段类型的方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文