linux执行sql脚本gosc,可重新运行的SQL Server脚本

确保SQL可以重复运行而不会在后续运行中收到错误的最佳实践是什么?

例如

在创建表之前检查表是否已存在

在创建或重命名之前检查列是否已存在

错误时回滚的事务

如果在重新创建表之前删除存在的表,则首先删除它们的依赖项,并且不要忘记在之后重新创建它们

如果您的SQL风格支持它,请使用CREATE OR ALTER PROCEDURE而不是CREATE PROCEDURE或ALTER PROCEDURE

维护内部版本控制方案,因此相同的SQL首先不会运行两次.通过这种方式,您可以通过查看版本号来了解自己所处的位置.

将现有数据导出到INSERT语句,并从头开始完全重新创建整个DB.

在创建它们之前删除表(不是最安全的事情,但是如果你知道你在做什么的话就会工作)

编辑:我正在寻找这样的东西:

IF EXISTS ( SELECT *

FROM sys.objects

WHERE object_id = OBJECT_ID(N'[dbo].[foo]')

AND OBJECTPROPERTY(object_id, N'IsUserTable') = 1 )

DROP TABLE foo

其他人是否使用这样或更好的陈述?

编辑:我喜欢Jhonny的建议:

IF OBJECT_ID('table_name') IS NOT NULL DROP TABLE table_name

我这样做是为了添加列:

IF NOT EXISTS ( SELECT *

FROM SYSCOLUMNS sc

WHERE EXISTS ( SELECT id

FROM [dbo].[sysobjects]

WHERE NAME LIKE 'TableName'

AND sc.id = id )

AND sc.name = 'ColumnName' )

ALTER TABLE [dbo].[TableName] ADD [ColumnName]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值