首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么它有复制插入使用sqlite?

为什么它有复制插入使用sqlite?
EN

Stack Overflow用户
提问于 2018-12-24 06:21:50
回答 1查看 23关注 0票数 1

这是我的db表模式,

代码语言:javascript
复制
S_DB_Column _db_ott_option[N_DB_OTT_OPTION] = 
{   
    {"int",         "ott_param_type",               "%d"},  
    {"int",         "ott_param_id",                 "%d"},  
    {"int",         "ott_param_value",              "%d"},  
    {"char (128)",  "ott_param_name",               "%Q"},      
};

我想在db中控制电影字幕pid。DB使用自动增量。

例如,我的查询如下,

代码语言:javascript
复制
insert or replace into _ottsubt ( ott_param_type, ott_param_id, ott_param_value, ott_param_name ) values ( 0, 9291, 8190, 'Movie 1' );

insert or replace into _ottsubt ( ott_param_type, ott_param_id, ott_param_value, ott_param_name ) values ( 0, 9291, 260, 'Movie 1' );

记录在表中复制,

如果存在相同的记录,我希望进行更新,如果不存在相同的记录,则希望插入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-24 06:39:14

您的问题是,插入的列都没有唯一的约束。

我相信你想用以下方法来创建表格:

代码语言:javascript
复制
create table if not exists _ottsubt(id INTEGER PRIMARY KEY, ott_param_type int, ott_param_id int UNIQUE, ott_param_value int, ott_param_name char (128));

那么上面的内容就会起作用。

工作实例:-

代码语言:javascript
复制
drop table if exists _ottsubt;
create table if not exists _ottsubt(id INTEGER PRIMARY KEY AUTOINCREMENT, ott_param_type int, ott_param_id int UNIQUE, ott_param_value int, ott_param_name char (128));
insert or replace into _ottsubt ( ott_param_type, ott_param_id, ott_param_value, ott_param_name ) values ( 0, 9291, 8190, 'Movie 1' );
insert or replace into _ottsubt ( ott_param_type, ott_param_id, ott_param_value, ott_param_name ) values ( 0, 9291, 260, 'Movie 1' );
SELECT * FROM _ottsubt;

结果:-

或者,您可以删除id列,而使用(以及rowid的别名)将ott_parm_id作为主键:-

代码语言:javascript
复制
create table if not exists _ottsubt(ott_param_type int, ott_param_id int INTEGER PRIMARY KEY, ott_param_value int, ott_param_name char (128));
  • 注意: AUTOINCREMENT已被删除,它可能不是必需的,而且效率很低,如SQLite自动增量所示,包括:-

AUTOINCREMENT关键字会增加额外的CPU、内存、磁盘空间和磁盘I/O开销,如果不是严格需要的话,应该避免。通常是不需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53909888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档