CREATE TABLE TEST.MAMANG
(
MASO NVARCHAR(200) NULL UNIQUE,
NHAMANG NVARCHAR(200)
CHECK (NHAMANG IN ('Viettel', 'Mobifone', 'Vinaphone',
'Vietnamobile', 'Gmobile Beeline')),
)
GO
CREATE RULE checkPhone AS ((LEN(@typePhone) = 10) OR (LEN(@typePhone) = 11)
AND ISNUMERIC(@typePhone) = 1
AND @typePhone = ANY (SELECT MASO FROM TEST.MAMANG)
)
GO
答案 0 :(得分:0)
规则上的documentation很清楚:
condition_expression
是定义规则的一个或多个条件。规则可以是任何 表达式在WHERE子句中有效,并且可以包含诸如 算术运算符,关系运算符和谓词(用于 例如IN,LIKE和BETWEEN)。 规则不能引用列或其他 数据库对象。不引用数据库的内置函数 可以包含对象。无法使用用户定义的功能。
您的规则违反了此规定:
@typePhone = ANY (SELECT MASO FROM TEST.MAMANG)
您应该只使用外键约束和检查约束。