sql server事务 锁 存储过程 索引 触发器

1.事务:保证一个多操作的事情全部完成,否则回到做之前的状态
begin try
begin tran–设置反悔点,开启事务
delete from UserInfo where UserId>5
delete from ClassInfo
commit tran–不反悔,提交事务
end try
begin catch
rollback tran–反悔啦,回滚事务
end catch

2.锁:防止其它人员的误操作,加了锁只有自己可以执行这个操作
select * from UserInfo

begin tran–加锁
update UserInfo set UserName=‘abc1’ where UserId=10
rollback tran–开锁

3.存储过程
create proc trim
@str1 varchar(10)
as
begin
select LTRIM(RTRIM(@str1))
end
–‘abc’
exec trim ’ abc ’

create proc GetPage
@pageIndex int,
@pageSize int,
@rowsCount int output
as
begin
SET NOCOUNT ON;
select @rowsCount=COUNT() from StudentInfo
select * from
(select ,ROW_NUMBER() over(order by sid desc) as rowIndex
from StudentInfo) as t1
where rowindex between (@pageIndex-1)
@pageSize+1 and @pageIndex
@pageSize
end

declare @temp int
exec GetPage 1,2,@temp output
print @temp

4.索引
select * into test2 from PersonList
select * into test1 from PersonList

create nonclustered index ix_phone
on test1(pPhone)

set statistics time on
select * from test1
select * from test1–CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
where pName=‘王美霞’
select * from test2-- CPU 时间 = 15 毫秒,占用时间 = 20 毫秒。
where pName=‘王美霞’

5.触发器
select * into classTest from ClassInfo where 1=2

select * from ClassInfo
select * from classTest

create trigger ClassInfo_Delete on ClassInfo
after delete
as
begin
set nocount on
insert into classTest(ctitle)
select ctitle from deleted
end
delete from ClassInfo where cId=4

猜你喜欢

转载自blog.csdn.net/huipingx/article/details/85013468