Хорошо, только что нашел скрипт, который создаст базу данных pubs.
Столбец au_id
по авторам определяется как:
CREATE TABLE authors
(
au_id id
CHECK (au_id like '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]')
CONSTRAINT UPKCL_auidind PRIMARY KEY CLUSTERED,
/* More columns */
Это ограничение CHECK отклоняет ваши недопустимые значения, а не что-либо связанное с пользовательским типом. Если вы изучите сообщения об ошибках, вероятно, упомянет , что это ограничение CHECK
, которое не выполняется.
(Кстати - я предположил, что это был формат SSN, а не номера телефонов - кто-нибудь подтвердит?)
Пользовательские типы в SQL Server (кроме табличных) не представляют особой ценности - все, что они на самом деле делают, - это ассоциированное сокращенное имя для встроенного типа со всеми фиксированными параметрами масштаба / точности / длины.
Они были бы чрезвычайно полезны, если бы система позволяла вам устанавливать строгие типы - такие, чтобы два значения одного и того же базового типа, но с разными именами типов, не были сопоставимы / присваивались - вы бы например, гораздо лучше получать предупреждения / ошибки, чем запросы, выполняемые с ошибочно выровненными объединениями.