2013-07-24 88 views
1

enter image description here我想實現一個停車場應用 所以有5個以上的停車場 當駕駛員停放了他的車在車庫裏的一個空閒插槽應該分配給他一個車庫。SQLITE更新,限制的情況下

所以我有具有5首或更多個狹槽 我有問題的表車庫當我更新 更新車庫自由設置= 0,設定轎廂= 1(car_id),則所有的空閒時隙是更新如何限制只更新第一個空行?

誰能幫我提前

感謝(假) 感謝 我有水平和槽在每一個級別的時候我停一輛車,我想只更新空閒插槽車庫表

table garage

+0

您需要有一個WHE帶有標準的RE子句引用您想要更新的行。 – andrewb

+0

我唯一的標準是布爾真或假(免費或不免費),所以可以有多行免費,所以我不能真正限制它只是一些限制條件將appriciated – JahShaka

+0

顯示您的表結構。聽起來好像沒有正確設計。 – dispake

回答

7

您需要指定要更新哪個或哪些記錄,否則數據庫將更新全部。如果您希望專門更新一條記錄,則可能需要使用WHERE條款引用其PRIMARY KEY

如果您還沒有分配給你的表PRIMARY KEYyou could use SQLite's rowid column.事情是這樣的:

SELECT rowid FROM garage WHERE free = 1; 

然後,假設您識別點5是免費的汽車42:

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

如果您您可以將這兩個步驟合併爲一個查詢:

UPDATE garage SET free=0, car=42 WHERE rowid IN (SELECT rowid FROM garage WHERE free=1 LIMIT 1); 
+0

是的,這是明確的,但我想動態分配插槽,所以我沒有給槽ID,但只有免費(真,假)列,所以UPDATE和LIMIT將是一個選項,但似乎一些額外的努力,使這個sqlite – JahShaka

+6

在我看來,我想知道我打電話給UPDATE的停車位ID,但假設你不在意,可以結合這些查詢:'UPDATE garage SET free = 0,car = 42 WHERE rowid IN(SELECT rowid FROM garage WHERE free = 1 LIMIT 1);' – rutter

+0

好吧多數民衆贊成在此謝謝 – JahShaka

相關問題