zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Final Zadanie 题解
    CF1096E The Top Scorer 题解
    [SDOI2008]Sue的小球 题解
    柱爷与远古法阵 题解
    [ZOJ3329] One Person Game 题解
    扑克牌 题解
    CF494C Helping People 题解
    CF1025D Recovering BST 题解
    linux基础学习-Raid 0 1 5 10的原理、特点、性能区别
    linux基础学习-CentOS7.5用户管理
  • 原文地址:https://www.cnblogs.com/haosit/p/10733954.html
Copyright © 2011-2022 走看看