临时表初识心得

Hello,你们的云云又来喽~

最近,在做Winform相关项目,使用DataGridView控件显示筛选后的数据,并且要定时更新显示数据。实际情况需要在获取到数据开始一直监测数据的变化。

设计思路:比如说我们做一个当天的跟踪监测零下温度天气变化的显示,一旦温度为零下就加入到显示列表,即使温度变化为零上也继续跟踪显示。这时候需要用到全局临时表##Temp_NoSeatVoteList,我们只需要在状态为0时候将其加入到全局临时表中,定时获取满足筛选条件的数据后进行比对,新的数据对全局临时表进行插入,已经存在的数据进行更新,满足删除条件的数据进行删除即可满足监测显示需求。

注意点:全局临时表每次会话结束,就会被系统释放,如果多次请求,建议使用永久表作为中间表使用。

知识点

  • 本地临时表,全局临时表

临时表与永久表相似,可以对数据进行增删改查,但临时表存储在Tempdb中,当不再使用时会自动删除。

本地临时表:一个#开头#Temp_LocalLists;仅创建的数据库连接可以访问;连接关闭,立马释放资源。

全局临时表:两个#开头##Temp_GlobalLists;创建后对任何数据库连接都是可见的,当多个连接同时访问,如果创建连接关闭的同时,另一个连接没有在使用全局临时表,那么##Temp_GlobalLists会被释放掉;可以使用with(xlock)排他锁来告诉系统另一个连接在使用;当事务完毕或者会话结束,则系统释放资源。

由于临时表利用了数据库临时表空间,由数据库系统自动进行维护,所以节省了数据库表空间。临时表空间一般使用的是虚拟内存,大大减少了硬盘I/O次数,因此也提高了系统效率。

  • 判断全局临时表是否存在

if object_id('Tempdb..##Temp_DataList')is  null

print '不存在'

else

print '存在'

  • 创建全局临时表

create table ##Temp_DataList

(

  ID int,

  Degree nvarchar(10),

  State nvarchar(10),

UpdateTime datetime

);

  • 删除全局临时表

if object_id('Tempdb..##Temp_DataList')is not null     

begin

drop table ##Temp_DataList

end

  • 新增表数据

insert into ##Temp_DataList select ID,Degree,State from ZeroDegree

where not exists(select * from  ##Temp_DataList where ##Temp_DataList.ID= ZeroDegree.ID);

  • 删除表数据

delete from ##Temp_DataList where dateadd(day, 1, UpdateTime) < getdate();

  • 更新表数据

update ##Temp_DataList set Degree=n.Degree from ##Temp_DataList

left join ZeroDegree n on n.ID =##Temp_DataList.ID

where  ##Temp_DataList.Degree!=n.Degree;

  • 查找表数据

select * from ##Temp_DataList;

 

学习地址:

临时表详解:https://www.cnblogs.com/baili-luoyun/p/11100644.html

临时表删除:https://www.cnblogs.com/lonelyxmas/p/7980073.html

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值