2012-03-06 4 views
0

Я пытаюсь понять архитектуру пабы образца базы данных с помощью Microsoft Там, я смотрю на au_id колонке, который имеет определенный пользователем типа данных ID: VARCHAR (11).Понимание определяемого пользователя типов данных в SQL

Итак, если я четко понимаю, varchar (11) означает, что он позволяет ввести 11 символов в ячейку. Но если я вхожу

  • 11 алфавитно-цифровых символов, то дает ошибку.
  • 11 цифровых символов, то дает ошибку
  • Но если ввести символы в числовом формате США Телефон т.е. 123-54-2345, это работает
  • Опять же, если я вхожу в тире (дефис) в другом порядке, т.е. 1234-5-4544, он снова показывает ошибку

Почему это происходит? Есть ли у них какой-либо метод для проверки этой записи. Я могу найти только определенный пользователем тип данных, который называется id в User-Defined Data Type Folder

Спасибо заранее.

+1

Я не понимаю, о чем вы просите ..... вы ищете учебник для начинающих по ADO.NET (http://www.codeproject.com/Articles/8477/Using-ADO- NET-for-beginners) - или что? –

+0

Вы действительно собираетесь хранить 2 тире в каждой строке? Вместо этого я использую вместо этого целое число данных и удаляю тире. –

+0

* что * ошибки это дает? * обычно *, сообщения об ошибках содержат полезную информацию, которая поможет вам понять причину или решение. –

ответ

4

Хорошо, только что нашел скрипт, который создаст базу данных 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, которое не работает.

(BTW - я предположил, что это был формат ПЛА, а не телефонные номера - кто подтвердить?)


определенные пользователем типы в SQL Server (кроме типов таблиц) не предлагают большое значение - все, что они действительно делают, связано с сокращенным именем для встроенного типа с фиксированными параметрами масштаба/точности/длины.

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

Смежные вопросы