1. 程式人生 > >SQL Server : 表是否存在;表中某欄位是否存在;儲存過程是否存在;索引是否存在;

SQL Server : 表是否存在;表中某欄位是否存在;儲存過程是否存在;索引是否存在;

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

相關推薦

no