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
第一次运行的结果如下: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
从运行结果的数据来看,这个方法有些缺陷,不能保证按相同的顺序填充临时表,并且在两次连续的查询中,也无法保证每个商品获得相同的行号。