Ich versuche, eine Spalte (MSSQL 2005) zu einer Tabelle (Employee) mit einer Standardbeschränkung eines Primärschlüssels einer anderen Tabelle (Department) hinzuzufügen. Dann werde ich diese Spalte zu einem FK für diese Tabelle machen. Im Wesentlichen wird dies neue Mitarbeiter zu einer Basisabteilung auf der Grundlage des Abteilungsnamens zuweisen, wenn keine DepartmentID bereitgestellt wird.
Das funktioniert nicht:
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
Die Datenbanken "Produktion", "Test" und "Entwicklung" sind nicht mehr synchron, und die Abteilungs-ID für den Abteilungsnamen = "RocketScience" kann die gleiche sein oder auch nicht, so dass ich nicht einfach DEFAULT (irgendeine Zahl) sagen möchte. Ich erhalte immer wieder die Meldung "Variablen sind in der ALTER TABLE-Anweisung nicht zulässig", egal, wie ich das Problem angehe.
Wie geht man dabei richtig vor? Ich habe auch versucht, die select-Anweisung zu verschachteln, was dazu führt, dass ich "Subqueries are not allowed in this context. Nur skalare Ausdrücke sind erlaubt."
Außerdem könnte ich die Spaltenwerte in einer einzigen Anweisung auffüllen, anstatt die
{ALTER null}
{Werte aktualisieren}
{ALTER nicht null}
Schritte. Ich habe etwas über den Befehl WITH VALUES gelesen, konnte ihn aber nicht zum Laufen bringen. Danke!!!