1

存在しない場合にレコードを更新する sqlite の単純なクエリを実行しようとしています。

使用することもできましたInsert or replaceが、リレーショナル テーブルであるため、テーブルにarticle_tagsは何もありません。primary key

サポートsqliteされていないため、このクエリを作成するにはどうすればよいですか。そして、これにCASEif not existsを使用する方法がわかりませんか?

テーブル構造:

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)
4

2 に答える 2

1

これはうまくいくようですが、他の人も言っているように、テーブルにいくつかの制約を追加してから、単に挿入を「試みる」ことをお勧めします。

insert into article_tags 
  select 2, 7 
  where  not exists ( select * 
                      from   article_tags 
                      where  article_id = 2 
                        and  tag_id     = 7 )
于 2013-05-18T05:09:29.857 に答える