在SQL Server中创建存储过程后,为什么要用Create
替换Alter
?如果我们不改变它会在执行时发生什么?有没有更好的替代品,然后检查是否存在并放弃?
答案 0 :(得分:7)
Create
将失败。如果表不存在,Alter
将失败。
如果您可以放弃并创建,请问为什么要使用Alter
,原因如下:
答案 1 :(得分:1)
从我的学习中,
每当您提供数据库构建时,最好检查存储过程是否存在以删除然后重新创建过程。
在调试过程时可能会发生从创建更改为更改但在提供构建时这不是标准做法。
答案 2 :(得分:1)
SQL Server中没有“CREATE OR REPLACE”语法(就像在其他RDBMS中一样)
如果我不确定某些东西存在,我倾向于使用这种模式。
IF OBJECT_ID('dbo.MyProc') IS NOT NULL
DROP PROC dbo.MyProc
GO
CREATE PROC dbo.MyProc
...
GO
GRANT EXECUTE ---
GO
答案 3 :(得分:1)
关于有用脚本的主题,我更喜欢创建过程(如果不存在),然后改为修改它。
IF (select object_ID('schema.Procedure')) is null
exec('Create procedure schema.Procedure as select 1')
GO
Alter procedure dpm.TableCellLoad
这样,授予程序的权限将始终保留,如果程序不存在则会创建。