SqlServer 判断表,字段,索引,约束,存储过程是否存在

首先认识一下

sysobjects系统表,可以查询出存在在这个数据库里面的系统表信息和用户自己创建的表的信息

syscolumns系统表,可以查询出存在在这个数据库里面的系统表字段数据信息和用户自己创建的表的字段信息

相关链接:将系统表映射到系统视图

1,判断表是否存在

--法1
IF EXISTS(SELECT * FROM sysobjects WHERE name = '@tableName')
	BEGIN
			PRINT '已存在'
	END
ELSE
	BEGIN
			PRINT '不存在'
	END
GO
	
--法2

IF OBJECT_ID (N'@tableName', N'U') IS NOT NULL
  BEGIN
      PRINT '已存在'
  END
ELSE
  BEGIN
      PRINT '不存在'
  END
GO

2,判断表字段是否存在

--法1
IF EXISTS (SELECT 1 FROM SYSOBJECTS T1 INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID  WHERE T1.NAME='表名' AND T2.NAME='字段名')
 BEGIN
	   PRINT '已存在'
 END
ELSE
  BEGIN
     PRINT '不存在'
  END
GO

--法2
IF COL_LENGTH('表名', '字段名') IS NOT NULL
	 BEGIN
		 PRINT '已存在'
	 END
ELSE
	BEGIN
		 PRINT '不存在'
	END
GO

3,判断表索引是否存在


IF  EXISTS (SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID('表名', N'U') and NAME='索引名')
	 BEGIN
		 PRINT '已存在'
	 END
ELSE
	BEGIN
		 PRINT '不存在'
	END
GO

4,判断约束是否存在

--这个只能以数据库的角度整体判断
IF OBJECT_ID('约束名') IS NOT NULL 
	 BEGIN
		 PRINT '已存在'
	 END
ELSE
	BEGIN
		 PRINT '不存在'
	END
GO

5,判断存储过程是否存在


IF Exists(select name from sysobjects where NAME = '存储过程名' and type='P')
	 BEGIN
			 PRINT '已存在'
	 END
ELSE
	BEGIN
		 PRINT '不存在'
	END
GO

6,判断表数据是否存在


IF NOT EXISTS (	SELECT * FROM [tablename] a WHERE a.[id] = 'b239908d-c61f-4c0c-81ec-e33633e9e15a')
	begin 
		INSERT INTO [dbo].[tablename]([id],  [code], [name], [value]) 
		VALUES ('b239908d-c61f-4c0c-81ec-e33633e9e15a', '', '', '');
	end

注意:

1,更新表结构、索引;需要验证表字段、索引是否存在,脚本后面需要加go

2,添加数据,需要验证数据是否存在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值