SQLITE的FTS3虚拟表主键失效.如何在虚拟表建立唯一约束.

SQLITE的FTS3虚拟表主键失效.如何在虚拟表建立唯一约束.,第1张

虚拟表格是一个对象, 必须具有一个打开的, 可以SQLite 数据库连接从一个SQL 语句, 该虚拟table 对象看上去像其它的表或视图但在幕后, 从失败的查询在虚拟表的虚拟表格调用回调方法的对象而不是读取和写入的数据库文件

使用虚拟表的机制允许应用程序发布来自SQL 语句可访问接口, 就像它们是表SQL语句可以在概念集群队列虚拟表它们都可以执行一个真实表, 但下列情况除外:

无法上创建触发器虚拟表中

不能在虚拟创建额外的索引的表(虚拟表可以有索引, 但必须构建到虚拟表的实现不能添加带索引的单独使用CREATE INDEX 语句)

一个无法运行ALTER TABLE ...ADD COLUMN 针对虚拟表格命令.

在sqlite中,可以用以下方法防止插入重复数据:

设置表的联合主键

在INSERT语句中添加OR IGNORE,即可。

示例如下:

insert OR IGNORE into PDA_Test (DeviceID,MethodName) values('1112','测试原有')

sqlite避免重复插入数据

SQLite 数据库常用约束如下:

NOT NULL - 非空

UNIQUE - 唯一

PRIMARY KEY - 主键

FOREIGN KEY - 外键

CHECK - 条件检查

DEFAULT - 默认

用insert语句插入数据,为避免重复插入又不打断数据处理。

首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。

ALTER TABLE的SQLite SQLite支持ALTER TABLE的一个有限子集。在ALTER SQLite中允许一个表或一个新列添加到现有表。删除列,或者添加或从表中删除约束。sqlite中是不支持删除有值的列 *** 作的,所以alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下:

1.根据原表创建一张新表

2.删除原表

3.将新表重名为旧表的名称

示例例子如下

1.创建一张旧表Student,包含id(主码),name, tel

create table student (

id integer primary key,

name text,

tel text

)

2.给旧表插入两个值

insert into student(id,name,tel) values(101,"Jack","110")

insert into student(id,name,tel) values(102,"Rose","119")

结果如图

3.接下来我们删除电话这个列,首先根据student表创建一张新表teacher

create table teacher as select id,name from student

4.然后我们删除student这个表

drop table if exists student

5.将teacher这个表重命名为student

alter table teacher rename to student

结果演示:

select * from student order by name desc(desc降序, asc升序)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11383680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存