在以数据库为基础的应用程序开发中,分页是一个比较常用的操作,
可惜的是SQL Server2000中没有Oracle中相应的ROWNUM属性可用,
用”触发器“生成一个ROWNUM列]
勉强可以一用,当然用如下的SQL语句也可以生成第i页,每页n行,tid是主键列,
select top n * from tab
where strWhere and tid>(select max(tid)
from (select top (i-1)*n tid from tab where strWhere order by tid ) as T)
)
order by tid
也可以,但是我想用另一种方法也未尝不可
因此就有自动生成ROWNUM列的想法
eg:
建表:
CREATE TABLE [dbo].[orderEmp] (
[rownum] [int] NOT NULL ,---同时该列要求有唯一性约束
[ordID] [int] IDENTITY (1, 1) NOT NULL ,---主键列
[empID] [int] NOT NULL ,
[empTxt] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[empDate] [datetime] NOT NULL ---此列上建“聚集索引“
) ON [PRIMARY]
----------对插入语句处理的触发器
CREATE TRIGGER orderEmpAddTrg
ON orderEmp
instead of INSERT
AS
begin
declare @rw int
select @rw=0
select @rw=max(rownum) from orderEmp