SQL Server: restricción CHECK en una columna donde los valores provienen de otra tabla

¿Cómo se pone una restricción CHECK en una columna de modo que su rango de valores aceptables provenga de otra tabla, sin codificación?

Aquí hay un ejemplo simplificado:

OneManyTable
RoleID  TaskID
10      Val1
10      Val2
20      Val1
20      Val2


MetaDataTable
pkID    Class   Value
1       A       Val1
2       A       Val2
3       B       Val3
4       B       Val4

Quiero poner una restricción CHECK en la columna OneManyTable.TaskID para que los valores aceptables provengan de la columna de otra tabla, es decir, de MetadataTable.Value donde MetadataTable.class = 'A'

Ya intenté crear una restricción CHECK del formato

TaskID in (Select Value FROM MetadataTable where class= 'A')

Pero esto no es compatible.

Por otro lado, TaskID en ('Val1', 'Val2') funciona como una restricción de verificación en SQL2k8 (¡no en SQL2000!), Pero no es aceptable debido a la codificación rígida.

¿Cómo lograr lo que quiero, ya sea a través de la restricción CHECK o algún otro mecanismo elegante del que no tenga conocimiento?

PD. Tiene que estar en el lado de la base de datos, sin verificación del lado del cliente, como me lo ha sugerido alguien.

Respuestas a la pregunta(2)

Su respuesta a la pregunta