• 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)

  • 相关阅读:
    Kmeans中文聚类
    第四周周总结
    数据清洗第一天
    第三周周总结
    关于sqoop上传mysql数据到hive报错的问题
    天津东软实训第十一天——Hive连接JDBC
    天津东软实训第十天——Hive配置
    天津东软实训第九天——MapReduce实战
    天津东软实训第八天------倒排索引
    Intellij IDEA 创建maven项目,利用API操作HDFS
  • 原文地址:https://www.cnblogs.com/haosit/p/10733954.html
Copyright © 2020-2023  润新知