尝试在SQL Server中创建规则时遇到麻烦

时间:2018-09-16 14:51:02

标签: sql sql-server

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

1 个答案:

答案 0 :(得分:0)

规则上的documentation很清楚:

  

condition_expression

     

是定义规则的一个或多个条件。规则可以是任何   表达式在WHERE子句中有效,并且可以包含诸如   算术运算符,关系运算符和谓词(用于   例如IN,LIKE和BETWEEN)。 规则不能引用列或其他   数据库对象。不引用数据库的内置函数   可以包含对象。无法使用用户定义的功能。

您的规则违反了此规定:

@typePhone = ANY (SELECT MASO FROM TEST.MAMANG)

您应该只使用外键约束和检查约束。