PHP コードを使用して MYSQL テーブルを更新した後、影響を受ける行の主キーを返す必要があります。これを達成する方法はありますか?
質問する
2404 次
2 に答える
2
以下を実行する前に、主キーを取得する必要がありますUPDATE
。
SELECT primary_key_columns FROM my_table WHERE status = 'O';
UPDATE my_table SET status = 'E' WHERE status = 'O';
ただし、2 つのステートメント間で変更される可能性のある同時接続がある場合my_table
、最初のステートメントによって返されたキーの結果が、2 番目のステートメントSELECT
によって更新されたレコードと完全に一致しない可能性があります。UPDATE
これを防ぐには、トランザクションで操作を実行する必要があります (ただし、トランザクションにはストレージ エンジンからのサポートが必要であることに注意してください。通常、この目的には InnoDB が使用されます)。
START TRANSACTION;
SELECT primary_key_columns FROM my_table WHERE status = 'O' FOR UPDATE;
UPDATE my_table SET status = 'E' WHERE status = 'O';
COMMIT;
于 2012-05-19T08:00:38.740 に答える
1
必要なことを行う1つの方法は、更新を行う前に、更新の条件で主キーを事前に選択することです。
あなたのクエリが
Update * from "table" where Y
次のことを行う必要があります。
Yの「テーブル」から「主キー」を選択
「テーブル」から X を更新します。ここで、Y
お役に立てれば!
于 2012-05-19T07:56:08.560 に答える