2017-02-13 5 views
0

sqliteについて質問があります。その後Sqlite - スマートな挿入または置換クエリ

CREATE TABLE GOODS(ID TEXT PRIMARY KEY NOT NULL, TYPE TEXT, VERSION INTEGER) 

しばらく私はこのような「を挿入または交換」を使用したい:

insert or replace into GOODS(ID, TYPE,VERSION) values ('chrome_id', 'chrome', 15); 

しかし、私は「を置換」IFFにこのクエリをしたい私はテーブルを作成したと仮定すると、

old.VERSION < new.VERSION。

どうすればいいですか?

のクエリを使用する必要があります(これは次のようになります:)。

1. get row 
if(row.VERSION < myVersion){ 
2. insert or replace ... 
} 

トリガーについて聞いたことがありますが、これは解決策だと思います。 THX

+0

NO。 REPLACE INTOは値が見つからない場合はINSERTし、見つかった場合はUPDATEします。単一の**コマンド**(クエリはSELECTのみ)が必要です。 –

+0

私の知る限り、置き換えは:DELETE + INSERTです。私は "どうすればいいですか?"私は実際には単一のコマンドを意味したので、単一のコマンドが必要だと言うときにはどういう意味ですか?正確に何を意味していますか? @Rotwang – wantToLearn

+0

あなたは一つのコマンド(REPLACE INTO)が必要です。あなたの命令を達成するためにそれはあなたのビジネスではありません。 ** one **コマンドを実行するように指示し、** 2 **を実行します。 –

答えて

1

が挿入された行数を制御できるようにINSERT statementのSELECT形式を使用します。

INSERT OR REPLACE INTO Goods(ID, Type, Version) 
SELECT 'chrome_id', 'chrome', 15 
WHERE NOT EXISTS (SELECT * 
        FROM Goods 
        WHERE ID = 'chrome_id' 
        AND Version >= 15); 
+0

それは動作します!ありがとう! – wantToLearn

関連する問題