ver una tipos tabla restricciones restriccion constraint check agregar sql sql-server check-constraint

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.