SQL Server : 表是否存在;表中某字段是否存在;存储过程是否存在;索引是否存在;

本文介绍如何使用SQL语句检查表、字段、存储过程及索引的存在状态,并提供了创建或修改这些数据库对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

table_name --表名

field_name --字段名

一、表是否存在:

--如果不存在表,那么创建

IF OBJECT_ID('table_name') IS NULL 
BEGIN 
     CREATE TABLE table_name([field_name] [UNIQUEIDENTIFIER] PRIMARY KEY CLUSTERED NOT NULL  
          ,[field_name] [UNIQUEIDENTIFIER] 
          ,[field_name] [UNIQUEIDENTIFIER] 
     )
END
GO 

二、表中某字段是否存在:

--如果不存在某字段,那么添加,否则修改

IF NOT EXISTS(SELECT * FROM syscolumns WHERE name='field_name' AND id=OBJECT_ID('table_name')) 
   ALTER TABLE [table_name] ADD [field_name] VARCHAR(50);    --添加字段
ELSE
   ALTER TABLE [table_name] ALTER COLUMN [field_name] VARCHAR(50);    --修改字段

GO 

三、存储过程是否存在:

--如果存在存储过程,那么先删除,再创建
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_cb_Calc]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[usp_cb_Calc]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[usp_cb_Calc]  
(  
 @field_name uniqueidentifier,  
 @field_name varchar(100)  
)  
AS  

-- DECLARE @testLevel tinyint  

-- 

--

--Return 1

四、索引是否存在:

--如果存在索引,那么先删除索引,然后再创建索引

IF EXISTS(SELECT * FROM sysindexes WHERE id=object_id('table_name') AND name='_dta_index_k_Task_Z') 
DROP INDEX [_dta_index_k_Task_Z] ON [dbo].[table_name]

GO 

CREATE NONCLUSTERED INDEX [_dta_index_k_Task_Z] ON [dbo].[table_name]
(
[field_name] ASC,
[field_name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值