[英]Alter Table Filestream runs even if IF statement is false
我正在编写脚本来更新数据库以添加Filestream功能。 该脚本需要能够多次运行而不会出错。 这是我目前所拥有的
IF ((select count(*) from sys.columns a
inner join sys.objects b on a.object_id = b.object_id
inner join sys.default_constraints c on c.parent_object_id = a.object_id
where a.name = 'evidence_data' and b.name='evidence'
and c.name='DF__evidence_evidence_data') = 0)
begin
ALTER TABLE evidence SET ( FILESTREAM_ON = AnalysisFSGroup )
ALTER TABLE evidence ALTER COLUMN id ADD ROWGUIDCOL;
end
GO
我第一次对数据库运行此程序时,它运行良好。 第二次,如果if语句应为false,它将引发错误消息“由于表'evidence'已经具有FILESTREAM文件组或分区方案,因此无法添加FILESTREAM文件组或分区方案。” 如果我在if语句中放入一个简单的select并在线取出alter table文件流,它将正常运行并且不会执行if语句。 因此,从本质上讲,即使if语句为false,它也始终在语句上运行alter table文件流。
任何想法或建议都会很棒。 谢谢。
在不知道细节的情况下很难推断出您的业务逻辑,但是我想说,如果您只想更改未定义文件流数据空间的表,请考虑以下查询的条件(如果对于给定表,这意味着未定义文件流数据空间(文件组或分区方案):
select filestream_data_space_id from sys.tables
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.