2013-10-26 81 views
-2

當我使用下面的查詢向表中添加新記錄(未知)時,新記錄添加到表的第一個。 我想添加新的記錄到最後一個表。添加一條記錄到最後的表

這是我的代碼:

begin 
insert into TBLCrowler (Url,Title,ParentId,HasData) values (@Url,@Title,@ParentId,@HasData) 
end 
+7

有「第一」或在關係數據庫表中的「最後」行沒有這樣的事。 –

回答

0

好,一度陷入中斷。 您正在使用關係數據庫。這不是一張工作表,它不是一個word文檔中矩形的單元格陣列。它的力量依賴於能夠以最有效的方式存儲和檢索記錄。

訂購要麼通過聲明

如果你想要的東西由他們加入時間排序通過一個指數,該指數的DBMS是可以忽略暗示,並可能無論如何改變,或明確要求通過訂單在表中,添加created_at列並在執行插入時填充它。

然後,當您從中選擇時,將Order By Created_At添加到您的選擇語句中。

如果你想讓這個順序變得「快速」,你可以在Created_At列上添加一個索引,然後DBMS會勇敢地嘗試使用這個索引,以避免全路徑排序的代價。

退一步,想一想如何編寫DBMS。你隱含的有序性的成本是多少。對「最後」表中的「最後」記錄以外的任何更改均意味着將「在」之後的每個表中的每個記錄重寫到磁盤。插入更糟糕,刪除同樣糟糕,並且沒有考慮到不同的記錄會佔用不同的空間量。

所以,第一個和最後扔到垃圾桶,如果你能找到他們...

+0

我在這裏找到一種方法是我做的 – mohammad

+0

我是所有的耳朵交配,事實上agog。那麼你打算怎麼做? –

1
select top 1 CatId, Title, ParentId, Url, CrawlerCheck from TBLCrowler where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1) 
update TBLCrowler set CrawlerCheck=2 , HasData=2 
where CatId=(Select min(CatId) from TBLCrowler where CrawlerCheck=1) 
相關問題