Je souhaite modifier une table pour ajouter une contrainte lors de la mise à niveau sur une base de données SQL Server.Comment utiliser une variable pour spécifier le groupe de fichiers dans SQL Server
Cette table est normalement indexée sur un groupe de fichiers appelé 'MY_INDEX' - mais peut également être dans une base de données sans ce groupe de fichiers. Dans ce cas, je veux que l'indexation soit faite sur le groupe de fichiers 'PRIMARY'.
J'ai essayé le code suivant pour y parvenir:
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'
Cependant, la dernière ligne échoue car il semble un groupe de fichiers ne peut pas être spécifié par la variable.
Est-ce possible?
Merci, je suis allé avec cela, même si c'est plus une solution de contournement qu'une solution. Je me demande pourquoi les variables ne sont pas autorisées ici. –