IDENTITY(自动编号)字段在分页中的使用

    我们先了解一下临时表的相关知识,临时表跟正常数据表一样,除了名字前通常加上#或者##之外,可以同正常表一样使用。#表示一个局部临时表,##表示是一个全局临时表。局部临时表是属于创建它的数据库连接的,而全局临时表在所有数据库连接中都是可连接的。
    IDENTITY(自动编号)字段在分页中的使用,自动获取数据的编号,起着关键的作用。
    以北风数据库为例,代码示例如下: 
CREATE PROCEDURE [dbo].[MyTable] 
AS
CREATE TABLE #MyProducts 
(MyROW 
int not null Identity(1,1),
 MyProductID 
int,
 MyProductName varchar(
40)) 
BEGIN
    INSERT INTO #MyProducts(MyProductID,MyProductName)
SELECT  ProductID,ProductName FROM Products
SELECT MyROW,MyProductID,MyProductName FROM #MyProducts  WHERE MyROW 
>=2 AND MyROW<=5 
END
    第一次运行的结果如下:
MyROW       MyProductID MyProductName                            
----------- ----------- ----------------------------------------
2           3           Aniseed Syrup                            
5           18          Carnarvon Tigers                         
3           40          Boston Crab Meat                         
4           60          Camembert Pierrot
    从运行结果的数据来看,这个方法有些缺陷,不能保证按相同的顺序填充临时表,并且在两次连续的查询中,也无法保证每个商品获得相同的行号。

posted @ 2007-09-02 21:26  金戈铁马  阅读(501)  评论(2编辑  收藏  举报