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

解决方案 »

  1.   

    Delphi 对临时表支持得很好,UPDATE SET 可以对表进行字段赋值
      

  2.   

    对于这个问题呢:
    2.多个用户使用时,每个客户端启动时都要产生一个临时表,相互之间会不会有冲突?表名称的冲突?sql server是如何处理这种事的呢?是后面的临时表覆盖老的,还是每个用户自己都有自己的临时表?
      

  3.   

    在SQL SERVER中,临时表有两种
    一为局部临时表,一为全局临时表
    局部临时表的生存期为一个会话
    全局临时表的生存期为一个连接
    所以,每个用户都会有自己的局部临时表,而全局临时表则可以服务于每个用户。建议查看连机帮助!
    或MSDN
      

  4.   

    insert to ##temp我记得是全局临时表吧?
    如何避免每个用户连接时都要产生一个全局临时表?如果每个用户连接时都产生一个全局临时表,有无冲突?如何才能在建立这个临时表前早先检查,库中已经有此临时了(这样就不建立了).
    还有一个问题:基于连接的全局临时表,是否是等到没有用户连接时才自动清除的?还是到建立它的用户退出连接时就清除了?我想应该是前者吧?
    如果是前者,那么当各表中有更改时,如何及时的反映到临时表中?
      

  5.   

    还有:
      第一个连接用户建立了一个全局临时表 temp,又有一个用户连接上来,它也要建立这么一个临时表时,是否是覆盖前一个用户名建立的临时表?
      

  6.   

    原来是要支持SQL语句的啊,不好意思
      

  7.   

    这个临时表主要是为了显示数据与统计用的,不用为修改等考虑。
    我想可以用
      if 有此临时表 then 程序启动
    else 建立这个临时表如何判断已经有这个临时表存在?笨方法我是知道的,不知sql server中有什么简便的?