SQL SERVER数据库中创建设置可重复执行的判断

都是先删后添

1.在生成表CREATE前面加上这一段(如果有则删除再添加)

IF EXISTS (SELECT 1 FROM   sys.objects WHERE  object_id = OBJECT_ID(N'表名table') AND type = N'U')
BEGIN
    DROP TABLE 表名table;
END;

2.在生成的函数CREATE脚本前面加这一段(如果函数存在,先删除)
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'函数名F3_') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
    DROP FUNCTION 函数名F3_
GO

3.在生成的存储过程CREATE脚本前面加这一段(如果存储过程存在,先删除)
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'存储过程名SP3_') AND type in (N'P', N'PC'))
BEGIN
    DROP PROCEDURE 存储过程名SP3_
END;
GO

4.在为表增加列的脚本前面加这一段(如果表存在列不存在才执行)
IF (EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'表名') AND type in (N'U')) AND COL_LENGTH('表名','新增列') IS NULL)
BEGIN
    ALTER TABLE 表名 ADD 新增列 数据类型 (eg:ALTER TABLE aaa ADD addcell varchar(500))
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'新增列中文名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'新增列'
END
GO

5.在为表增加索引的脚本前面加这一段(聚集索引)(如果索引不存在才执行)(这个我不常用)
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'表名') AND name = N'索引名')
CREATE CLUSTERED INDEX 索引名 ON 表名
(
    [aaa] ASC,
    [bbb] 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

6.是否存在视图

IF (EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'视图表'))
BEGIN
DROP VIEW 视图表
END

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值