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
@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
[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