0

PHP コードを使用して MYSQL テーブルを更新した後、影響を受ける行の主キーを返す必要があります。これを達成する方法はありますか?

4

2 に答える 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 に答える