Oracleは存在します更新は存在しません挿入



Oracle Exists Update Does Not Exist Insert



UPDATE TEST SET NAME= V_NAME WHERE ID = V_ID -- Update first IF SQL%NOTFOUND THEN -- judge the update result INSERT INTO TEST(ID, NAME)VALUES(V_ID,V_NAME) -- Insert if no data is updated to END IF

ここに穴があります

更新SQLの背後にある条件に非主キーフィールドが含まれている場合、主キーの競合が発生する可能性があります。



テーブル内の特定のデータが非主キーフィールドと異なる場合に更新される可能性があるため、更新されずに挿入が実行されます。挿入時に、主キーが同じ場合に主キーの競合が発生する可能性があります。