トランザクションはどうですか?ロールバック機能があります。
@see https://dev.mysql.com/doc/refman /5.0/en/commit.html
例:
START TRANSACTION;
SELECT * FROM nicetable WHERE somthing=1;
UPDATE nicetable SET nicefield='VALUE' WHERE somthing=1;
SELECT * FROM nicetable WHERE somthing=1; #check
COMMIT;
# or if you want to reset changes
ROLLBACK;
SELECT * FROM nicetable WHERE somthing=1; #should be the old value
以下の@rickozoeからの質問への回答:
通常、これらの行は一度だけ実行されることはありません。 PHPではf.e.あなたはそのようなものを書くでしょう(おそらく少しきれいですが、すぐに答えたいと思いました;-)):
$MysqlConnection->query('START TRANSACTION;');
$erg = $MysqlConnection->query('UPDATE MyGuests SET lastname='Doe' WHERE id=2;');
if($erg)
$MysqlConnection->query('COMMIT;');
else
$MysqlConnection->query('ROLLBACK;');
別の方法は、MySQL変数を使用することです( https:/を参照) /dev.mysql.com/doc/refman/5.7/en/user-variables.htm
土地
# do some stuff that should be conditionally rollbacked later on
SET @v1 := UPDATE MyGuests SET lastname='Doe' WHERE id=2;
IF(v1 < 1) THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
ただし、お気に入りのプログラミング言語で利用可能な言語ラッパーを使用することをお勧めします。