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修改字段类型的方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析
这篇文章主要介绍了关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析,需要的朋友可以参考下2018-10-10SQL中的单条件判断函数IF和多条件判断CASE WHEN的用法
MySQL提供了IF、IFNULL、CASE等条件判断函数,本文就来介绍一下SQL中的单条件判断函数IF和多条件判断CASE WHEN的用法,感兴趣的可以了解一下2023-10-10
最新评论