なしのMySQLのトランザクションをコミット私はtheir documentは、IF ELSE END IFのみストアド・プロシージャではサポートされていることを述べました。は条件付きストアドプロシージャ
MySQL supports the IF, CASE, ITERATE, LEAVE LOOP, WHILE, and REPEAT constructs for flow control within **stored programs**.
cliを使用して実行中のバッチステートメントではサポートされていないように見えました。
パフォーマンスを最適化し、往復を減らすために、アプリケーションによるROW_COUNT()の読み取りは考慮されません。 mysqlが光の速さでそれを取ることができるならば最高です。
追加のストアドプロシージャを使用せずに動作させるにはどうすればよいですか?いずれかが間違っている場合、更新のチェーンを中断するために、すべてのUPDATEでWHERE ROW_COUNT()を使用しようとしました。何も変更すべきではないにしても、トランザクションの開始は複製されません。
EDIT:要するに
、私は、ストアドプロシージャを使用せずに、crondスケジュールで
START TRANSACTION
UPDATE `table_a` SET a=1 WHERE id=1 AND addition=2;
UPDATE `table_b` SET a=1 WHERE id=1 AND another_rule=3;
IF UPDATE_COUNT() = 1
THEN
COMMIT
ELSE
ROLLBACK
END IF
をどのように行うのですか。
あなたがしようとしていることはまったく明らかではありません。言い直してください/精巧にしてください。 – Mat