我正在尝试有条件地执行一个ALTER TABLE
命令(准确地说是这个)。但是,我无法将其ADD PERIOD
设为有条件的,我怀疑这可能是一个错误。
如果PERIOD
表中已经存在,这是我尝试跳过执行的内容。所有这些都会引发相同的错误:
消息 13597,级别 16,状态 2,第 xx 行
临时 SYSTEM_TIME 时间段已在表 'msdb.dbo.sysjobhistory' 上定义。
仅在PERIOD
当前不存在时添加:
if not exists(select 1 from sys.periods where object_id = OBJECT_ID('sysjobhistory'))
ALTER TABLE [dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
Run Code Online (Sandbox Code Playgroud)
这引发了错误。
由于上述方法不起作用,我想确保我的IF
语句正确评估,所以我尝试了:
if 1=2
ALTER TABLE [dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
Run Code Online (Sandbox Code Playgroud)
但这也引发了错误。
使用SET NOEXEC ON
到的代码停止执行:
set noexec ON
ALTER TABLE [dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime) …
Run Code Online (Sandbox Code Playgroud)