sql >> データベース >  >> RDS >> Sqlserver

同時実行の問題の挿入-マルチスレッド環境

    秘訣は、INSERTステートメントにWHEREを追加して、アイテムが存在しない場合にのみINSERTが機能するようにし、その後にSELECTステートメントを追加することです。次のように記述したID列でレコードを識別できると仮定します。

    INSERT INTO MyTable (ID,Col1,Col2,...) 
    SELECT @IDValue,@Col1Value,@Col2Value, ...
    WHERE NOT EXISTS (SELECT ID  
                  FROM MyTable 
                  WHERE [email protected]) 
    
    SELECT *  
    FROM MyTable 
    Where [email protected] 
    

    各ステートメントは独自の暗黙的なトランザクションで実行されるため、ステートメントをトランザクションに入れる必要はありません。したがって、2つのINSERTが同時に成功する方法はありません。

    編集 :TSQLではINSERTステートメントでVALUESとWHEREの部分が許可されていないため、INSERT...SELECT構文が必要です。



    1. 指定された値がフィールドに見つかった場合、PDO MySQLステートメントを拒否しますか?

    2. クエリでシリアル番号を生成するにはどうすればよいですか?

    3. tnsnameを使用してAntからOracleデータベースに接続するにはどうすればよいですか?

    4. sqlまたはphpPgAdminを使用してPostgreSQLデータベースのデータベースエンコーディングを変更するにはどうすればよいですか?