• Sqlserver临时表


    临时表说明:

    SQL Server临时表是临时对象的一种,临时对象是以#或者##为前缀的,
    诸如临时存储过程、临时函数等都是临时对象,临时对象都存储在tempdb数据库中。
    当我们关闭数据库时,临时表会自动删除。临时表分为本地临时表和全局临时表,
    一个#号为前缀的临时表是本地的,只有当前用户会话才可以访问,两个##为
    前缀的临时表是全局的。本地临时表的数据库连接有表的访问权限,其它连接不能访问
    该表;不同的数据库连接中,创建的本地临时表虽然"名字"相同,但是这些表之间
    相互并不存在任何关系;在SQLSERVER中,通过特别的命名机制保证本地临时表在数
    据库连接上的独立性,意思是你可以在不同的连接里使用相同的本地临时表名称。
    全局临时表是用户在创建表的时候添加"##"前缀的表,其特点是所以数据库连接
    均可使用该全局临时表,当所有引用该临时表的数据库连接断开后自动删除。
    全局临时表相比本地临时表,命名上就需要注意了,与本地临时表不同的是,全
    局临时表名不能重复。临时表利用了数据库临时表空间,由数据库系统自动进行维护
    ,因此节省了物理表空间。并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,
    因此也提高了系统效率。临时表在事务完毕或会话完毕数据库会自动清空,不必记得用完
    后删除数据。

    临时表创建:

    Case 1: 使用CREATE TABLE创建临时表
    CREATE TABLE {# | ##} temp_table_name (
    column_name_1 data type CONSTRAINT,
    column_name_2 data type CONSTRAINT,
    .
    .
    .
    column_name_n data type CONSTRAINT,
    );
    Case 2:使用SELECT INTO创建临时表
    SELECT
    columns_to_be_selected
    INTO
    { # | ##} temp_table_name
    FROM
    table_name;

    临时表的使用

    1. 增删改查跟物料表是一样的
    2. 需要主要其作用范围,比如在存储空间中使用下面语句,则会报对象名#temp无效,
    是因为临时表的作用域在exec中,
    exec('select IDENTITY(int,1,1) as ID into #temp from tbName' )
    select * from #temp 改成
    exec('select IDENTITY(int,1,1) as ID into #temp from tbName;select * from #temp ' )

  • 相关阅读:
    【转】理解Ruby的4种闭包:blocks, Procs, lambdas 和 Methods
    折腾weibo开放平台
    netsh——常用命令及使用技巧
    The Enemies of Achievement
    java内存模型
    命名规则
    JS 控制加载页面对象
    点击图片弹出上传文件对话框
    ASP.NET判断用户是否在线
    ASP.Net处理QueryString函数汉字参数传递错误
  • 原文地址:https://www.cnblogs.com/lorking/p/16159748.html
Copyright © 2020-2023  润新知