• SQL Server 判断各种对象是否存在和sysobjects的关系


    一、判断表是否存在

    object_id():获取表的ID,其中N表示Unicode类型.可以支持不同语种的对象名

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[表名]

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

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    -- 删除存储过程
    drop procedure [dbo].[存储过程名]

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

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[视图名]') and OBJECTPROPERTY(id, N'IsView') = 1)
    -- 删除视图
    drop view [dbo].[视图名]

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

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))
    -- 删除函数
    drop function [dbo].[函数名]

    五、判断表列是否存在

    if col_length('表名', '列名') is not null
    select * from sysobjects where id in (select id from syscolumns where name='列名') and name='表名'

    六、dbo.sysobjects

      sysobjects是sql server的每个数据库内都有此系统表,它存放该数据库内创建的所有对象

      xtype对象类型:
        C:CHECK 约束,D:DEFAULT 约束,F:FOREIGN KEY 约束,L:日志,FN:标量函数 ,IF:内嵌表函数,P:存储过程,RF:复制筛选存储过程,TR :触发器 ,U:用户表,X:扩展存储过程,S:系统表 ,TF:表函数,UQ:UNIQUE 约束(类型是 K),V:视图,PK:PRIMARY KEY 约束(类型是 K)

  • 相关阅读:
    生成按月递增循环日期
    js判断上传图片宽高及文件大小
    网页上如何实现禁止复制粘贴以及如何破解
    PAT(乙级)1019
    PAT(乙级)1018
    PAT(乙级)1017
    PAT(乙级)1016
    PAT(乙级)1015
    关于PAT(乙级)
    PAT(乙级)1014
  • 原文地址:https://www.cnblogs.com/haosit/p/10733954.html
Copyright © 2020-2023  润新知