Пользовательские правила для определенного пользователем типа данных не работают - PullRequest
0 голосов
/ 25 января 2019

Я хочу определить новый пользовательский тип данных с помощью правила проверки, чтобы ограничить его значение, скажем,

CREATE RULE dbo.test
AS
@a LIKE '[A-Z][0-9]'

Затем я создаю пользовательский тип с этим правилом:

CREATE TYPE [dbo].[uType] FROM [varchar](2) NULL

EXEC sys.sp_bindrule @rulename=N'[dbo].[test]', @objname=N'[dbo].[uType]'

Затем проверьте это:

declare @a uType
set @a = 'K1'
set @a = 'AB'
select @a

Окончательное значение для @a получается без появления каких-либо ошибок, как если бы правило не существовало.Почему?

1 Ответ

0 голосов
/ 25 января 2019

После небольшого исследования я обнаружил, что правила не проверяются при создании переменной. Они проверяются, когда вы пытаетесь вставить значения в таблицу со столбцом определенного типа. Попробуйте приведенный ниже скрипт и убедитесь, что он выдаст ошибку:

create table tbl(col uType);
insert into tbl values ('ba'), ('A1')
select * from tbl

Но этот подход устарел, и его рекомендуется не использовать: Правила устарели, что вместо этого (TSQL)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...