加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite3添加、修改列名

发布时间:2020-12-13 00:11:55 所属栏目:百科 来源:网络整理
导读:sqlite3添加、修改列名 http://blog.163.com/yi_xiaoluo@126/blog/static/72090439201161533941528/ SQLite如何删除,修改、重命名列 . http://www.jb51.cc/article/p-fjfqmajq-bex.html 今天在SQLite数据库中添加了一列,后来发现列名写错了,于是使用SQL语

sqlite3添加、修改列名
http://blog.163.com/yi_xiaoluo@126/blog/static/72090439201161533941528/
SQLite如何删除,修改、重命名列 .
http://www.52php.cn/article/p-fjfqmajq-bex.html


今天在SQLite数据库中添加了一列,后来发现列名写错了,于是使用SQL语句来修改列名,可是根本不管用。

首先,请放弃alter吧。

sqlite官方说明如下:
SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. It is not possible to rename a column,remove a column,or add or remove constraints from a table.
大概意思是sqlite的alter功能只是alter table的一个子集,只有部分功能,比如重命名表名,新增列到现有表中。
不支持现有列的重命名,删除和修改。


查了N多资料,貌似只能通过一种间接的办法去做了,不管是重命名列还是删除列。

比如说你要修改的表名是A,方法步骤如下:

1.新建一个临时表T,这个T和表A具有相同的列。

2.把A中所有的数据都通过insert语句插入到T中

3.删除表A

4.新建表A,这时表A的列名就是你想要的结果,以前想修改的列名是什么,这时候就定义成什么,以前要删除的某个列,那么在定义的时候就不定义它。

5.恢复数据,把数据通过insert语句插入A,结构是insert into A select ... from tablen T

6.删除临时表T。

这个办法太笨拙了,但是目前还没有更好的办法啊,啊,啊,啊,啊,啊,啊 ,啊, 啊, 啊,啊, 啊,

查了半天sqlite的手册,没找到怎么修改列名。最后用了一个很笨的方法。
这里我要把post的tbl重命名为tb_l。

首先重命名post表。

ALTER TABLE post RENAME TO tmp_post;
在重新创建post表。

?1234 CREATE TABLE post(id integer primary key autoincrement,tb_l varchar(128) not null);
把tmp_post的数据导入post,并删除tmp_post;

insert into post (tb_l) select tbl from tmp_post;
drop table tmp_post;
如果原表tmp_post和新创建的标post列数一致,并且是一一对应的话,可以用一下语句导入。

insert into post select * from tmp_talbe;

--------------------------------------

使用Sqliteman修改表时,遇到一个问题,每当添加或修改列信息时,作为主键的信息就会丢失,所以只能自己写Sql执行了。示例:

ALTER TABLE "store_productcategory" ADD COLUMN "DisplayOrder" INT DEFAULT(0)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读