Вы можете использовать ограничение check
:
alter table person add constraint chk_person_phonenumber
check (phonenumber not like '%[^0-9]%');
Это говорит о том, что phonenumber
не имеет символов, которые не являются цифрами.
Обратите внимание, что вы расширяете шаблон, чтобы разрешить пробелы, дефисы или скобки, если вы действительно хотите их.
Если вы действительно просто хотели цифры, вы также можете использовать try_convert()
:
check (phonenumber not like '%.%' and
try_convert(decimal(38, 0), phonenumber) is not null
)
Это не так гибко для тем не менее, расширяя набор символов.