2016-04-25 10 views
0

通常のSQL(MySQLではなく)でテーブルに新しいエントリを更新または作成したいとします。 =テーブル内のエントリを更新または作成する

UPDATE TABLE 
    SET ITERATION = ITERATION + 1 
    WHERE T_ID = 1; 

しかし、私は、反復のエントリを作成したいT_ID持つエントリが= 1が存在しない場合:私は、私は私のテーブルを更新することができます知っている

T_ID、ITERATION、COMMENT: 私のテーブルには列があります1、T_ID = 1、COMMENTには何もありません。

通常のSQL文を使用すると可能ですか?

+0

ストアドプロシージャで実装することができます –

+0

マージ句が必要です。 https://msdn.microsoft.com/en-in/library/bb510625.aspx –

+0

これは通常のSQL文を使用して可能ですか?私はPL/SQLやそれに類するものを使用したくないと思います。 – Puddle

答えて

0

が、これは通常のSQLステートメントを使用することにより可能ですか?

いいえ - 「upsert」(またはMerge)の「標準」SQL構文は1つのステートメントにありません。異なるSQLシステムは、MySQLのON DUPLICATE KEY UPDATEまたはOracleおよびSQL ServerのMERGE構文のような「存在すれば更新」操作を実行するメカニズムを実装していますが、「標準」SQLでは何もありません。

0

ストアドプロシージャで実行すると便利です。 T_ID = 1の場所に何かが存在するかどうかをチェックしている場所のようなものです。その後、その結論を基に更新または挿入します。

BEGIN TRAN 
IF EXISTS (SELECT * FROM table WHERE T_ID = 1) 
BEGIN 
    UPDATE table SET ITERATION = ITERATION + 1 WHERE T_ID = 1 
END 
ELSE 
BEGIN 
    INSERT INTO table (T_ID, ITERATION, COMMENT) 
    VALUES (1, 1, '') 
END 
COMMIT TRAN 
関連する問題