1)行ったすべての変更は、同じトランザクション内に表示されます。もしそうなら
START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;
出力には「こんにちは」が含まれます。ただし、2番目のデータベース接続を開始すると、最初の接続内からトランザクションをコミットするまで、新しい行は表示されません。コマンドラインを使用して2つのデータベース接続を使用してこれを試してみてください。
2つのデータベース接続内で同じトランザクションを実行できないため、Webサイトに効果が表示されません(リクエストの開始時に新しいdb接続が作成されます)。
2)コミットされていないすべてのトランザクションは、データベースとの接続が閉じられたときにロールバックされます。したがって、これらが2つのクエリだけである場合、違いはありません。ただし、
には違いがありますSTART TRANSACTION;
INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
ROLLBACK;
INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');
3)はい、これらはすべて同じです。