diff --git "a/44 \347\275\227\345\220\257\346\201\222/\347\275\227\345\220\257\346\201\222/\347\254\224\350\256\260/2022-10-12 instead\350\247\246\345\217\221\345\231\250.md" "b/44 \347\275\227\345\220\257\346\201\222/\347\275\227\345\220\257\346\201\222/\347\254\224\350\256\260/2022-10-12 instead\350\247\246\345\217\221\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..cc2837f15d28101891fae5c1353bd95df0f91fd6 --- /dev/null +++ "b/44 \347\275\227\345\220\257\346\201\222/\347\275\227\345\220\257\346\201\222/\347\254\224\350\256\260/2022-10-12 instead\350\247\246\345\217\221\345\231\250.md" @@ -0,0 +1,53 @@ + After触发器 +After触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。 + + Instead of 触发器 +Instead of 触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义。 + +INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器, +让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。 + + 分页查询 + +--一页几条 5 +declare @PageSize int = 6 +--第几页 +declare @Page int = 2 + +--一页5条 +--前5条: 第一页 +--select top @PageSize * from Student +--where StuId not in (select top 5*(1-1) stuid from Student) +----第二页 +--select top @PageSize * from Student +--where StuId not in (select top 5*(2-1) stuid from Student) + +--第三页 +select top (@PageSize) * from Student +where Stuid not in (select top ((@PageSize)*(@page-1)) stuid from student) + + +--between and 一页5条 +select * from Student where stuid between 1 and 5 +select * from Student where stuid between 6 and 10 +select * from Student where stuid between 11 and 15 + +--窗口函数 5 +--@PageSize = 5 @Page = 2 5*(1-1)+1 5*(2-1)+1 5*(3-1)+1 + + +declare @PageSize int = 5 +--第几页 +declare @Page int = 3 +--select * from +--(select ROW_NUMBER() over(order by stuid) as rid ,* from Student) as Temp +--where rid between 1 and 5 + +select stuid,StuName,StuSex from +(select ROW_NUMBER() over(order by stuid) as rid ,* from Student) as Temp +where rid between @PageSize*(@Page-1)+1 and @PageSize*@Page + +--第n页 +select * from +(select ROW_NUMBER() over(order by stuid) as rid ,* from Student) as Temp +where rid between 11 and 15 \ No newline at end of file