我想在升级 SQL Server 数据库期间更改表以添加约束。
此表通常在名为“MY_INDEX”的文件组上建立索引 - 但也可能在没有此文件组的数据库上。在这种情况下,我希望在“PRIMARY”文件组上完成索引。
我尝试了以下代码来实现这一点:
DECLARE @fgName AS VARCHAR(10)
SET @fgName = CASE WHEN EXISTS(SELECT groupname
FROM sysfilegroups
WHERE groupname = 'MY_INDEX')
THEN QUOTENAME('MY_INDEX')
ELSE QUOTENAME('PRIMARY')
END
ALTER TABLE [dbo].[mytable]
ADD CONSTRAINT [PK_mytable] PRIMARY KEY
(
[myGuid] ASC
)
ON @fgName -- fails: 'incorrect syntax'
但是,最后一行失败,因为它似乎无法通过变量指定文件组。
这可能吗?