Sto tentando di aggiungere una colonna (MSSQL 2005) a una tabella (Impiegato) con un vincolo predefinito di una chiave primaria di un'altra tabella (Reparto). Quindi renderò questa colonna un FK a quel tavolo. In sostanza, questo assegnerà i nuovi dipendenti a un reparto base in base al nome del reparto se non viene fornito DepartmentID.
Questo non funziona:ALTER TABLE con valore DEFAULT costante costante programmato
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 produzione, test e database di sviluppo sono cresciuti fuori sincronia e la DepartmentID per il DepartmentName = 'RocketScience' può o non può essere la stessa in modo da non voglio per dire solo DEFAULT (somenumber). Continuo a ricevere "Le variabili non sono consentite nell'istruzione ALTER TABLE", indipendentemente dal modo in cui attacco il problema.
Qual è il modo corretto per farlo? Ho provato a nidificare anche l'istruzione select che ottiene "Le subquery non sono consentite in questo contesto. sono ammessi solo espressioni scalari “.
Inoltre, quello che sarebbe davvero grande ho potuto popolare i valori delle colonne in una dichiarazione invece di fare il
{ALTER null}
{valori Aggiornamento}
{ALTER non nullo}
passi. Ho letto qualcosa sul comando WITH VALUES ma non sono riuscito a farlo funzionare. Grazie !!!
Cercherò ma ho pensato che la documentazione ha detto solo funzioni di sistema consentiti ... –
Provatelo - ho fatto - lavorato per me (su SQL Server 2008, che è - ma dubito che questo è cambiato tra il 2005 e il 2008) –
Accetto la tua risposta ha funzionato alla grande! –