Estoy tratando de agregar una columna (MSSQL 2005) a una tabla (Empleado) con una restricción predeterminada de una clave principal de otra tabla (Departamento). Luego voy a hacer que esta columna sea FK en esa mesa. Esencialmente, esto asignará nuevos empleados a un departamento base basado en el nombre del departamento si no se proporciona DepartmentID.
Esto no funciona:ALTER TABLE con el valor DEFAULT constante por definición determinado mediante programación
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 producción, pruebas, y las bases de datos de desarrollo han crecido fuera de sincronía y la DepartmentID para la DepartmentName = 'RocketScience' puede o no ser el mismo, así que no quiero solo decir DEFAULT (somenumber). Sigo recibiendo "Las variables no están permitidas en la instrucción ALTER TABLE" sin importar en qué dirección ataque el problema.
¿Cuál es la forma correcta de hacer esto? He intentado anidar también la declaración de selección, que dice "Las subconsultas no están permitidas en este contexto. Sólo se permiten expresiones escalares.”
Además, lo que sería realmente grande que podía rellenar los valores de columna en una declaración en lugar de hacer la
{ALTER null}
{valores Actualizar}
{alterar no nulo}
pasos. Leí algo sobre el comando WITH VALUES pero no pude hacerlo funcionar. ¡Gracias!
Voy a tratar pero pensé que la documentación de dichas funciones único sistema permite ... –
Inténtelo - lo hice - trabajó para mí (en SQL Server 2008, que es - pero dudo que esto ha cambiado entre 2005 y 2008) –
¡Acepto su respuesta, funcionó muy bien! –