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'
ただし、ファイルグループを変数で指定できないように見えるため、最後の行は失敗します。
これは可能ですか?