您正在使用IPV4(3.215.177.171)访问本站 您本次共访问本站 1 次
用户名: 用QQ登录本站
密 码:
验证码:
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务       [公益] 节省一分零钱 献出一份爱心 温暖世间真情      
虚位以待
2021年 国庆节 7
2021年 重阳节 20
2022年 元 旦 99
2022年 春 节 130
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> 数据库 >> 内容
    sql server中判断表或临时表是否存在的方法
    内容摘要: 1、判断数据表是否存在方法一:useyourdb;goifobject_id(N'tablename',N'U')isnotnullprint'存在'elseprint'不存在'例如:usefireweb;goifobject_id(N'TEMP_TBL',N'U')isnotnullprint'存在'elseprint'不存在'方法二:USE[实例名]GO......
    1、判断数据表是否存在


    方法一:


    useyourdb;

    go


    ifobject_id(N'tablename',N'U')isnotnull

    print'存在'

    else

    print'不存在'

    例如:


    usefireweb;

    go


    ifobject_id(N'TEMP_TBL',N'U')isnotnull

    print'存在'

    else

    print'不存在'

    方法二:


    USE[实例名]

    GO


    IFEXISTS(SELECT*FROMdbo.SysObjectsWHEREID=object_id(N'[表名]')ANDOBJECTPROPERTY(ID,'IsTable')=1)

    PRINT'存在'

    ELSE

    PRINT'不存在'

    例如:


    usefireweb;

    go


    IFEXISTS(SELECT*FROMdbo.SysObjectsWHEREID=object_id(N'TEMP_TBL')ANDOBJECTPROPERTY(ID,'IsTable')=1)

    PRINT'存在'

    ELSE

    PRINT'不存在'

    2、临时表是否存在:


    方法一:


    usefireweb;

    go


    ifexists(select*fromtempdb..sysobjectswhereid=object_id('tempdb..##TEMP_TBL'))

    PRINT'存在'

    ELSE

    PRINT'不存在'

    方法二:


    usefireweb;

    go


    ifexists(select*fromtempdb.dbo.sysobjectswhereid=object_id(N'tempdb..#TEMP_TBL')andtype='U')

    PRINT'存在'

    ELSE

    PRINT'不存在'

    下面是补充介绍:


    在sqlserver(应该说在目前所有数据库产品)中创建一个资源如表,视图,存储过程中都要判断与创建的资源是否已经存在

    在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法

    如下:


    ifobject_id('tb_table')isnotnull

    print'exist'

    else

    print'notexist'

    如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源

    object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,

    这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:


    ifobject_id('tb_table','u')isnotnull

    print'exist'

    else

    print'notexist'

    第二个参数"u"就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写

    查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子

    u-----------用户创建的表,区别于系统表(USER_TABLE)

    s-----------系统表(SYSTEM_TABLE)

    v-----------视图(VIEW)

    p-----------存储过程(SQL_STORED_PROCEDURE)

    可使用selectdistincttype,type_descfromsys.objects获得全部信息



    库是否存在


    ifexists(select*frommaster..sysdatabaseswherename=N'库名')

    print'exists'

    else

    print'notexists'

    ---------------

    --判断要创建的表名是否存在

    ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[表名]')andOBJECTPROPERTY(id,N'IsUserTable')=1)

    --删除表

    droptable[dbo].[表名]

    GO

    ---------------

    -----列是否存在

    IFCOL_LENGTH('表名','列名')ISNULL

    PRINT'notexists'

    ELSE

    PRINT'exists'

    altertable表名dropconstraint默认值名称

    go

    altertable表名dropcolumn列名

    go

    -----

    --判断要创建临时表是否存在

    IfObject_Id('Tempdb.dbo.#Test')IsNotNull

    Begin

    print'存在'

    End

    Else

    Begin

    print'不存在'

    End

    ---------------

    --判断要创建的存储过程名是否存在

    ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[存储过程名]')andOBJECTPROPERTY(id,N'IsProcedure')=1)

    --删除存储过程

    dropprocedure[dbo].[存储过程名]

    GO

    ---------------

    --判断要创建的视图名是否存在

    ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[视图名]')andOBJECTPROPERTY(id,N'IsView')=1)

    --删除视图

    dropview[dbo].[视图名]

    GO

    ---------------

    --判断要创建的函数名是否存在

    ifexists(select*fromsysobjectswherextype='fn'andname='函数名')

    ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[函数名]')andxtypein(N'FN',N'IF',N'TF'))

    --删除函数

    dropfunction[dbo].[函数名]

    GO

    ifcol_length('表名','列名')isnull

    print'不存在'

    select1fromsysobjectswhereidin(selectidfromsyscolumnswherename='列名')andname='表名'

    版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
    上一篇:如何启动/停止/重启MySQL 下一篇:sqlserver中获取date类的年月日语句
    发布日期:2021/8/31
    手机扫二维码直达本页
    发布时间:10:29:28
    点击:267
    录入:齐天大圣
    相关文章
    Baidu
    YiJiaCMS V6.0.1 Build 21.9.2(MSSQL) 闽ICP备05000814号-1
    本空间由景安网络提供,百度云加速提供加速防护
    ©2000-2021