CHECK CONSTRAINT en múltiples columnas

Yo uso SQL Server 2008

Uso una RESTRICCIÓN DE VERIFICACIÓN en varias columnas en la misma tabla para intentar validar la input de datos.

Recibo un error:

La restricción CHECK de columna para la columna 'AAAA' hace reference a otra columna, la 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_CmsSponsonetworkingContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate), ); 

Sí, defina la RESTRICCIÓN DE VERIFICACIÓN en el nivel de la tabla

 CREATE TABLE foo ( bar int NOT NULL, fnetworking varchar(50) NOT NULL, CONSTRAINT CK_foo_stuff CHECK (bar = 1 AND fnetworking ='fish') ) 

Lo está declarando en línea como una restricción de columna

 ... fnetworking varchar(50) NOT NULL CONSTRAINT CK_foo_fnetworking CHECK (...) ... 

Editar, más fácil de publicar que describir. Reparado tus comas.

 CREATE TABLE dbo.Test ( EffectiveStartDate dateTime2(2) NOT NULL, EffectiveEndDate dateTime2(2) NOT NULL, --need comma CONSTRAINT CK_CmsSponsonetworkingContents_EffectiveEndDate CHECK (EffectiveEndDate > EffectiveStartDate) --no comma ); 

Por supuesto, la pregunta que queda es si está usando una restricción CHECK donde debería ser una restricción FK …?

Las restricciones de verificación pueden referirse a una sola columna o a todo el logging.

Use esta syntax para las restricciones de nivel de logging:

 ALTER TABLE MyTable ADD CONSTRAINT MyCheck CHECK (...your check expression...) 

Simplemente puede aplicar su validation en un desencadenador sobre la table, especialmente si de cualquier forma la operación se revertirá si falla la verificación.

    Intereting Posts