Я пытаюсь добавить столбец (MSSQL 2005) в таблицу (Employee) с ограничением по умолчанию первичного ключа другой таблицы (отдела). Тогда я собираюсь сделать этот столбец FK для этой таблицы. По сути, это назначит новых сотрудников базовому отделу, основанному на имени отдела, если не будет предоставлен отдел.
Это не работает:ALTER TABLE с программно определяемым постоянным значением DEFAULT
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
Производство, испытание и базы развития выросли из синхронизации и DepartmentID для DepartmentName = «RocketScience» может или не может быть таким же, так что я не хочу просто сказать DEFAULT (somenumber). Я продолжаю получать «Переменные не допускаются в инструкции ALTER TABLE» независимо от того, каким образом я атакую проблему.
Каков правильный способ сделать это? Я также попытался вставить инструкцию select, которая получает «Подзапросы в этом контексте не разрешены. Только скалярные выражения допускаются.»
Кроме того, что было бы очень здорово, я мог бы заполнить значение столбца в одном операторе вместо того, чтобы делать то
{ALTER нуля}
{значения Update}
{ALTER не нуль}
шаги. Я кое-что прочитал о команде WITH VALUES, но не смог заставить ее работать. Спасибо !!!
Я попробую, но я думал, что документация говорит только системные функции разрешено ... –
Попробуйте - я - работал на меня (на SQL Server 2008, то есть - но я сомневаюсь, что это изменилось в период между 2005 и 2008) –
Я принимаю ваш ответ, он отлично работает! –