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
关于规则的documentation非常明确:
condition_expression的
是定义规则的条件。规则可以是WHERE子句中有效的任何表达式,并且可以包含算术运算符,关系运算符和谓词等元素(例如,IN,LIKE,BETWEEN)。规则不能引用列或其他数据库对象。可以包括不引用数据库对象的内置函数。无法使用用户定义的函数。
您的规则违反了以下规定:
@typePhone = ANY (SELECT MASO FROM TEST.MAMANG)
您应该只使用外键约束和检查约束。