2013-10-26 25 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) 
相关问题