是用固定表还是临时表的好?请有经验的开发人员入内指教,谢谢!

chenjiong 2002-11-25 08:57:31
用的是SQL SERVER:

  在客户端程序启动时,需要产生一张视图或是说表也可以的。它的数据是从其它多个表中取出形成的一张大表,内容比较多,有30个字段吧。
  我有两个选择:
  一、先按要查询出的字段做成一张表,设置好,然后用insert into 固定表 select.....一个存储过程来插入数据。这样的话只需要是在各表数据有变动的时候,执行一下就可以了。
  二、用临时表,在每次启动程序时先产生##临时表,也是用存储过程完成。这样的话就不用管各表的数据是否有变动,反正每次进入产生的数据大表都是最新的。另外还有两个简单的问题:1.由于表中有几个数字型的字段不能为Null值,所以产生临时表后得用update set 字段=0 ,不知临时表是否支持这种操作?按方法一的话当然是可以的了;2.多个用户使用时,每个客户端启动时都要产生一个临时表,相互之间会不会有冲突?表名称的冲突?sql server是如何处理这种事的呢?是后面的临时表覆盖老的,还是每个用户自己都有自己的临时表?

  第一次用这东东,不明白的地方请多指教!
...全文
75 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
局部临时表的生存期为一个会话
//如果用这个,对于同一个连接的用户而言,每次查询或统计都要先生成临时表,那不是太重复了吧?
My_first 2002-11-26
  • 打赏
  • 举报
回复
用局部临时表。 对于每个用户的查询结果都不一样。如果你用##那大家都是用的一个,已不出乱子了。
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
算了,想想还是用固定表好了,那样少些重复操作,虽然笨些。
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
这个临时表主要是为了显示数据与统计用的,不用为修改等考虑。
我想可以用
if 有此临时表 then 程序启动
else 建立这个临时表

如何判断已经有这个临时表存在?笨方法我是知道的,不知sql server中有什么简便的?
深宇 2002-11-26
  • 打赏
  • 举报
回复
你看这样行不行,用用户的IP地址做表名,这样不是不会重复了吗?
深宇 2002-11-26
  • 打赏
  • 举报
回复
原来是要支持SQL语句的啊,不好意思
Andersgl 2002-11-26
  • 打赏
  • 举报
回复
我觉得...
应该考虑一下,多用户访问数据时出现的脏读数据,不可重复读等的问题.
即事务的概念问题.
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
视图与内存表都不行。请仔细看我的要求。
深宇 2002-11-26
  • 打赏
  • 举报
回复
在客户端建立内存表不是更好吗?
bear_tj 2002-11-26
  • 打赏
  • 举报
回复
难道用视图不行吗?
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
还有:
  第一个连接用户建立了一个全局临时表 temp,又有一个用户连接上来,它也要建立这么一个临时表时,是否是覆盖前一个用户名建立的临时表?
chenjiong 2002-11-26
  • 打赏
  • 举报
回复
insert to ##temp我记得是全局临时表吧?
如何避免每个用户连接时都要产生一个全局临时表?如果每个用户连接时都产生一个全局临时表,有无冲突?如何才能在建立这个临时表前早先检查,库中已经有此临时了(这样就不建立了).
还有一个问题:基于连接的全局临时表,是否是等到没有用户连接时才自动清除的?还是到建立它的用户退出连接时就清除了?我想应该是前者吧?
如果是前者,那么当各表中有更改时,如何及时的反映到临时表中?
lghzl 2002-11-26
  • 打赏
  • 举报
回复
可以建视图和触发器,每次数据变化自动执行触发器,根本不需要自己处理,但速度可能会慢一点。
cgh1970 2002-11-25
  • 打赏
  • 举报
回复
up
gmc007 2002-11-25
  • 打赏
  • 举报
回复
在SQL SERVER中,临时表有两种
一为局部临时表,一为全局临时表
局部临时表的生存期为一个会话
全局临时表的生存期为一个连接
所以,每个用户都会有自己的局部临时表,而全局临时表则可以服务于每个用户。

建议查看连机帮助!
或MSDN
chenjiong 2002-11-25
  • 打赏
  • 举报
回复
对于这个问题呢:
2.多个用户使用时,每个客户端启动时都要产生一个临时表,相互之间会不会有冲突?表名称的冲突?sql server是如何处理这种事的呢?是后面的临时表覆盖老的,还是每个用户自己都有自己的临时表?
huangbaoty 2002-11-25
  • 打赏
  • 举报
回复
Delphi 对临时表支持得很好,UPDATE SET 可以对表进行字段赋值

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧