行がアトミックに更新されている場合は、どのような方法が最適ですか?そうでない場合は、新しい行をテーブルに挿入しますか?Atomic Upsert MySQL
次の例があるとします。
CREATE TABLE Test(
id integer,
val varchar(255)
)
DELIMITER $$
DROP PROCEDURE IF EXISTS `TestUpsert` $$
CREATE PROCEDURE `TestUpsert` (in value1 varchar(255), in id1 int)
BEGIN
IF EXISTS(Select 1 from Test where id=id1) THEN
UPDATE Test set val = value1 where id = id1;
ELSE
insert into Test(id, val) VALUES (id1, value1);
END IF;
END $$
DELIMITER ;
TestUpsertをアトミックにするためにどのような変更を加えることができますか?
ので、私はT-SQLタグを削除:
は、ここでは、この声明についての私の長い答えを参照してください。 –