una - unique sql server
VERIFICACIÓN DE RESTRICCIONES en múltiples columnas (3)
Las restricciones de verificación pueden referirse a una sola columna o al registro completo.
Utilice esta sintaxis para restricciones de nivel de registro:
ALTER TABLE MyTable
ADD CONSTRAINT MyCheck
CHECK (...your check expression...)
Yo uso SQL Server 2008
Utilizo CHECK CONSTRAINT en varias columnas en la misma tabla para intentar validar la entrada de datos.
Recibo un error:
La restricción CHECK de la columna para la columna ''AAAA'' hace referencia a otra columna, tabla ''XXXX''.
CHECK CONSTRAINT no funciona de esta manera.
¿Alguna otra forma de implementar esto en una sola tabla sin usar FK?
Gracias
Aquí un ejemplo de mi código
CREATE TABLE dbo.Test
(
EffectiveStartDate dateTime2(2) NOT NULL,
EffectiveEndDate dateTime2(2) NOT NULL
CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate),
);
Sí, defina CHECK CONSTRAINT a nivel de tabla
CREATE TABLE foo (
bar int NOT NULL,
fred varchar(50) NOT NULL,
CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fred =''fish'')
)
Lo está declarando en línea como una restricción de columna
...
fred varchar(50) NOT NULL CONSTRAINT CK_foo_fred CHECK (...)
...
Editar, más fácil de publicar que describir. Arreglado tus comas.
CREATE TABLE dbo.Test
(
EffectiveStartDate dateTime2(2) NOT NULL,
EffectiveEndDate dateTime2(2) NOT NULL, --need comma
CONSTRAINT CK_CmsSponsoredContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma
);
Por supuesto, la pregunta sigue siendo: ¿estás usando una restricción CHECK donde debería ser una restricción FK ...?
Simplemente puede aplicar su validación en un disparador en la tabla, especialmente de que de cualquier manera la operación se retrotraerá si la verificación falla.