J'essaie d'ajouter une colonne (MSSQL 2005) à une table (Employee) avec une contrainte par défaut d'une clé primaire d'une autre table (Department). Ensuite, je vais faire de cette colonne un FK à cette table. Essentiellement, cela affectera les nouveaux employés à un ministère de base en fonction du nom du ministère si aucun ID ministériel n'est fourni.
Cela ne fonctionne pas:ALTER TABLE avec une valeur DEFAULT constante déterminée par programme
DECLARE @ErrorVar INT
DECLARE @DepartmentID INT
SELECT @DepartmentID = DepartmentID
FROM Department
WHERE RealName = 'RocketScience'
ALTER TABLE [Employee]
ADD [DepartmentID] INT NULL
CONSTRAINT [DepartmentIDOfAssociate] DEFAULT (@DepartmentIDAssociate)
SELECT @ErrorVar = @@Error
IF (@ErrorVar <> 0)
BEGIN
GOTO FATAL_EXIT
END
La production, le test et les bases de données de développement ont augmenté désynchronisé et DepartmentID pour la DepartmentName = « Rocketscience » peut ou ne peut pas être le même si je ne veux pas juste pour dire DEFAULT (somenumber). Je continue d'obtenir "Les variables ne sont pas autorisées dans l'instruction ALTER TABLE" peu importe la manière dont j'attaque le problème.
Quelle est la bonne façon de faire cela? J'ai essayé d'imbriquer l'instruction select qui obtient "Les sous-requêtes ne sont pas autorisées dans ce contexte. Seuls les expressions scalaires sont autorisées. »
En outre, ce serait vraiment génial que je pouvais remplir les valeurs de colonne dans une instruction au lieu de faire la
{ALTÉRER null}
{valeurs de mise à jour}
{modifie pas null}
pas. J'ai lu quelque chose à propos de la commande WITH VALUES mais je n'ai pas réussi à le faire fonctionner. Merci !!!
Je vais essayer, mais je pensais que la documentation a dit que les fonctions du système autorisés ... –
Essayez - je l'ai fait - travaillé pour moi (sur SQL Server 2008, qui est - mais je doute que cela a changé entre 2005 et 2008) –
J'accepte votre réponse cela a bien fonctionné! –