sqlite并不支持建表后修改主键,或删除列,如果要修改,请参考如下做法

SQLite has limited ALTER TABLE support that you can use to add a column to the end of a table or to change the name of a table. If you want to make more complex changes in the structure of a table, you will have to recreate the table. You can save existing data to a temporary table, drop the old table, create the new table, then copy the data back in from the temporary table.

For example, suppose you have a table named "t1" with columns names "a", "b", and "c" and that you want to delete column "c" from this table. The following steps illustrate how this could be done:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

http://sqlite.org/faq.html#q11

http://stackoverflow.com/questions/946011/sqlite-add-primary-key

时间: 2024-11-07 22:47:50

sqlite并不支持建表后修改主键,或删除列,如果要修改,请参考如下做法的相关文章

SQL语句建表、设置主键、外键、check、default、unique约束

· 什么是数据库? 存放数据的仓库. · 数据库和数据结构有什么区别? 数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题.数据结构研究一些抽象数据模型(ADT)和以及定义在该模型上的一些操作,数据库是由表.关系.操作组成. · 什么是主键? 主键用来标识记录的唯一性. · 什么是外键? 外键用来标识表与表之间的联系. · 什么是check约束? check约束限制了输入值的范围. · 什么是default约束? 给某个属性一个默认值. · 什么是unique约束? 限制某

ODI修改主键后刷新失败解决方案

ODI增量刷新,修改主键值后,会导致刷新失败.解决办法:使用表中值固定不定的列作为增量刷新的依据列. 演示如下: 如上,源表和目标表有相同的记录.现修改源表主键信息 执行数据同步刷新后,目标表数据如下 发现,源表在update主键时,执行同步后,会向目标表新插入一条记录,原主键值记录仍保留在库中. 解决方案:从源表中找出一列(一组)固定不定的字段,目标表中以源表固定不变的字段建立主键,作为更新的依据. 如下: 源表ORDTASK2,主键为ORDNO,METHODCODE:在做数据集成时,我们认为

oracle问题:新建了一个PDM文件,建表后生成的sql语句中含有clustered

问题描述 为了在oracle中新增表,在PDM中建表,使用其生成的sql语句,但是建表不能成功,提示 ORA-00906: 缺失左括号 原因是多了clustered 关键字 情景重现 1. 新建一个pdm文件 2. 建表后预览sql 是有clustered 这个关键字的 3. 建表时报错 问题解决 调查发现数据库的问题,右键数据库属性 查看DBMS 发现是 SQL SERVER ! 解决办法就是切换DBMS: 点击确定 再次查看sql语句,一切正常.问题最终解决.

Mysql复制表结构、表数据以及修改主键

mysql查看表结构命令 show columns from 表名; 1.复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错.     2.只复制表结构到新表 CRE

百万数据修改索引,百万数据修改主键

原文:百万数据修改索引,百万数据修改主键 当百万数据时,如果修改主键,那么会自动重建索引,所以操作会非常慢,经常会超时,错误提示类似: 超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决方案:不要采用手动添加主键或者索引,而采用sql语句修改主键或者索引,当然很多人这个sql不会写,也不要紧,sql自带了,两步走,第一:点开表设计,添加一个索引或者主键,如图 第二:关闭后,右键,有一个生成更改脚本,如图: 点击生成,复制里面的脚本,关闭当前页面,记住,不要保存哦....然后运行这个sq

创建和修改主键 (SQL)

添加主键, ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY ([列名:ProductID, UserID...])  多个列则是组合主键 删除主键, ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 修改主键,先执行删除 ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 语句删除现有主键, 然后执行 ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象",地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hos

sql新增后返回主键

对于刚学的人来说有点帮助,新增后返回主键有两种方法: 1,返回自增的主键: 1 INSERT INTO 表名 2 (字段名1,字段名2,字段名3,…) 3 VALUES 4 (值1,值2,值3,…) 5 SELECT @@IDENTITY 2,返回主键也可以返回别的字段看需要:inserted.id这里的id可以是其他字段就是一个字段名,比如还可以返回inserted.name 1 INSERT INTO 表名 2 (字段名1,…) 3 OUTPUT inserted.id 4 VALUES 5