2

ここに画像の説明を入力駐車場アプリケーションを実装したいので、ドライバーが車を駐車するときに 5 つ以上の駐車場があるガレージがあり、ガレージの次の空きスロットが彼に割り当てられる必要があります。

5 つ以上のスロットを持つテーブル ガレージがあります。アップデート ガレージを更新するときに問題が発生します。無料 = 0 を設定し、車 = 1 (car_id) を設定すると、すべての空きスロットが更新されます。最初の空き行のみを更新するように制限するにはどうすればよいですか?

誰でも私を助けることができます

事前に感謝します (偽) ありがとう 車を駐車するときに、各レベルにレベルとスロットを含むガレージ テーブルがあります。空いているスロットだけを更新したいです。

テーブルガレージ

4

1 に答える 1

7

更新するレコードを指定する必要があります。そうしないと、データベースがすべてのレコードを更新します。特に 1 つのレコードを更新する場合は、そのレコードをPRIMARY KEY句でWHERE参照することをお勧めします。

PRIMARY KEYテーブルに を割り当てていない場合は、SQLite のを使用できます。rowidこのようなもの:

SELECT rowid FROM garage WHERE free = 1;

次に、スポット 5 が 42 号車に空いていることを確認したとします。

UPDATE garage SET free = 0, car = 42 WHERE rowid = 5;

必要に応じて、これら 2 つの手順を 1 つのクエリに組み合わせることができます。

UPDATE garage SET free=0, car=42 WHERE rowid IN (SELECT rowid FROM garage WHERE free=1 LIMIT 1);
于 2013-07-24T00:28:33.113 に答える