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

问题描述 投票:0回答:1
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
sql sql-server
1个回答
0
投票

关于规则的documentation非常明确:

condition_expression的

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

您的规则违反了以下规定:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.