gpt4 book ai didi

sqlite - sqlite3,如果存在替代

转载 作者:行者123 更新时间:2023-12-03 15:05:17 25 4
gpt4 key购买 nike

我正在尝试为sqlite运行简单查询,如果不存在,则会更新记录。

我本可以使用Insert or replace,但article_tags表没有任何primary key,因为它是一个关系表。

由于不支持sqlite,如何为if not exists编写此查询。
我不知道如何使用CASE吗?

表结构:

articles(id, content)
article_tags(article_id, tag_id)
tag(id, name)


SQLITE不正确的语法尝试

insert into article_tags (article_id, tag_id ) values ( 2,7)
if not exists (select 1 from article_tags where article_id =2 AND tag_id=7)

最佳答案

我认为执行此操作的正确方法是将主键添加到article_tags表中,这是跨两个列的复合键。这是制作多对多关系表的正常方法。

换句话说(pseudo-DDL):

create table article_tags (
article_id int references articles(id),
tag_id int references tag(id),
primary key (article_id, tag_id)
);


这样,插入重复对将失败,而不必诉诸 if not exists

关于sqlite - sqlite3,如果存在替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com