Поделиться через


column_definition (Transact-SQL)

Изменения: 5 декабря 2005 г.

Определяет свойства столбца, который добавляется в таблицу при помощи инструкции ALTER TABLE.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

column_name [ type_schema_name. ] type_name
    [ 
                ( { precision [ , scale ] | max | 
            [ { CONTENT | DOCUMENT } ] xml_schema_collection } ) 
    ] 
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression 
             [ WITH VALUES ] 
        | IDENTITY [ (seed , increment ) ] [ NOT FOR REPLICATION ] 
    ] 
    [ ROWGUIDCOL ] 
    [ COLLATE < collation_name > ] 
    [ <column_constraint> [ ...n ] ] 

Аргументы

  • column_name
    Имя столбца, который должен быть изменен, добавлен или удален. Аргумент column_name может содержать от 1 до 128 символов. Для новых столбцов аргумент column_name может быть опущен, если столбцы создаются с типом данных timestamp. Если значение аргумента column_name не определено для столбца с типом данных timestamp, то используется имя timestamp.
  • [ type_schema_name**.** ] type_name
    Тип данных добавленного столбца и схема, которой он принадлежит.

    Аргумент type_name может иметь тип данных:

    • системный тип данных Microsoft SQL Server;
    • тип данных псевдонима, основанный на системном типе данных SQL Server. Псевдонимы типов данных должны быть созданы с помощью инструкции CREATE TYPE прежде, чем их можно будет использовать в определении таблицы;
    • определяемый пользователем тип Microsoft .NET Framework и схема, к которой он принадлежит. Определяемые пользователем типы .NET Framework должны быть созданы с помощью инструкции CREATE TYPE прежде, чем их можно будет использовать в определении таблицы.

    Если аргумент type_schema_name не задан, то компонент Microsoft SQL Server 2005 Database Engine ищет тип type_name в следующем порядке:

    • системный тип данных SQL Server;
    • схема по умолчанию текущего пользователя в текущей базе данных;
    • схема dbo текущей базы данных.
  • precision
    Точность для указанного типа данных. Дополнительные сведения о допустимых значениях точности см. в разделе Точность, масштаб и длина.
  • max
    Применимо только к типам данных varchar, nvarchar и varbinary. Они используются для хранения 2^31 байт символов или двоичных данных, либо 2^30 байт данных в формате Юникод.
  • CONTENT
    Определяет, что каждый экземпляр типа данных xml в column_name может включать в себя несколько элементов верхнего уровня. Аргумент CONTENT применим только к данным типа xml и может быть указан только в том случае, если одновременно указан аргумент xml_schema_collection. Если он не задан, то CONTENT имеет обычный смысл, заданный по умолчанию.
  • DOCUMENT
    Определяет, что каждый экземпляр типа данных xml в column_name может включать в себя только один элемент верхнего уровня. Аргумент DOCUMENT применим только к данным типа xml и может быть указан только в том случае, если одновременно указан аргумент xml_schema_collection.
  • xml_schema_collection
    Применим только к типу данных xml для коллекции XML-схем, связанной с этим типом. Перед помещением столбца xml в схему она должна быть создана в базе данных при помощи инструкции CREATE XML SCHEMA COLLECTION.
  • [ CONSTRAINT constraint_name ]
    Определяет начало определения DEFAULT. Для достижения совместимости с более ранними версиями SQL Server для ограничения DEFAULT может быть назначено имя. Аргумент constraint_name должен следовать правилам именования идентификаторов, за исключением того, что имя не может начинаться со знака #. Если аргумент constraint_name не задан, то определению DEFAULT назначается автоматически сформированное имя.
  • DEFAULT
    Ключевое слово, задающее значение по умолчанию для столбца. Определения DEFAULT могут использоваться для указания значений по умолчанию для новых столбцов в существующих строках данных. Определения DEFAULT не могут быть применены к столбцам типа timestamp или к столбцам, имеющим свойство IDENTITY. Если значение по умолчанию указывается для столбца определяемого пользователем типа, этот тип должен поддерживать неявное преобразование выражения constant_expression в определяемый пользователем тип.
  • constant_expression
    Символьное значение, NULL или системная функция, используемая в качестве значения столбца по умолчанию. Если используется в сочетании со столбцом определяемого пользователем типа .NET Framework, то реализация типа должна поддерживать неявное преобразование выражения constant_expression в определяемый пользователем тип.
  • WITH VALUES
    Указывает, что значение, указанное в выражении DEFAULT constant_expression, сохраняется в новом столбце, добавляемом к существующим строкам. Если добавленный столбец допускает значения NULL и указано предложение WITH VALUES, новый столбец, добавленный к существующим строкам, заполняется значением по умолчанию. Если предложение WITH VALUES не указано для столбцов, допускающих значение NULL, новый столбец для существующих строк заполняется значением NULL. Если новый столбец не допускает значения NULL, значение по умолчанию сохраняется во всех строках независимо от того, указано предложение WITH VALUES или нет.
  • IDENTITY
    Указывает, что новый столбец является столбцом идентификаторов. Компонент SQL Server Database Engine присваивает столбцу уникальное возрастающее значение. При добавлении столбцов идентификаторов в существующие таблицы номера идентификаторов добавляются в существующие строки. Номера идентификаторов формируются на основе начального значения и значения приращения в порядке изначального добавления этих строк. Номера идентификаторов также формируются для всех новых строк, которые добавляются.

    Столбцы идентификаторов часто используются в сочетании с ограничениями PRIMARY KEY, чтобы выступать в качестве уникального числового идентификатора строки таблицы. Свойство IDENTITY может быть назначено только столбцам с числовыми типами tinyint, smallint, int, bigint, decimal(p,0) или numeric(p,0). Возможно создание только одного столбца идентификаторов в каждой таблице. Ключевое слово DEFAULT и значения по умолчанию не могут применяться к столбцам идентификаторов. Начальное значение и шаг приращения для столбца идентификаторов должны быть либо заданы вместе, либо не заданы вообще. Если ничего не указано, применяется значение по умолчанию (1,1). Нельзя изменить существующий столбец таблицы, добавив в него свойство IDENTITY.

    ms187742.note(ru-ru,SQL.90).gifПримечание.
    Не поддерживается добавление столбца идентификаторов к опубликованной таблице, так как это может привести к расхождению данных при репликации столбца на подписчик. Значения такого столбца на издателе зависят от порядка, в каком строки таблицы хранятся физически. Строки могут быть сохранены на подписчике иначе; следовательно, значение в столбце идентификаторов может отличаться для одних и тех же строк.

    Чтобы запретить свойство IDENTITY столбца и при вставке строк задавать его значения явно, можно воспользоваться инструкцией SET IDENTITY_INSERT.

  • seed
    Значение, используемое для первой строки, загружаемой в таблицу.
  • increment
    Значение приращения, добавляемое к значению столбца предыдущей строки для получения значения столбца новой строки.
  • ROWGUIDCOL
    Показывает, что столбец является столбцом глобального уникального идентификатора строки. ROWGUIDCOL может быть назначен только для столбца uniqueidentifier, и только один столбец uniqueidentifier в таблице может быть объявлен как столбец ROWGUIDCOL. ROWGUIDCOL не может быть назначен столбцам с типами, определенными пользователем.

    Свойство ROWGUIDCOL не обеспечивает уникальности значений, хранимых в столбце. Кроме того, оно не производит автоматического формирования значений для новых строк, вставляемых в таблицу. Для формирования уникальных значений для каждого столбца можно использовать функцию NEWID в инструкциях INSERT или определить функцию NEWID как значение по умолчанию для столбца. Дополнительные сведения см. в разделах NEWID (Transact-SQL) и INSERT (Transact-SQL).

  • COLLATE < collation_name>
    Задает параметры сортировки для столбца. Если не указано, столбцу назначаются параметры сортировки, принятые в базе данных по умолчанию. Могут использоваться параметры сортировки Windows или параметры сортировки SQL. Список и дополнительные сведения см. в разделах Имя параметров сортировки Windows (Transact-SQL) и Имя параметров сортировки SQL (Transact-SQL).

    Предложение COLLATE может быть использовано для изменения параметров сортировки только для столбцов, имеющих тип char, varchar, nchar или nvarchar.

    Дополнительные сведения о предложении COLLATE см. в разделе COLLATE (Transact-SQL).

Замечания

Если добавлен столбец, имеющий тип данных uniqueidentifier, то он может быть определен с помощью умолчания, которое использует функцию NEWID() для предоставления новому столбцу уникального идентифицирующего значения для каждой существующей строки в таблице.

Компонент Database Engine не ограничивает порядок задания свойств DEFAULT, IDENTITY, ROWGUIDCOL или ограничений столбца в определении столбца.

Примеры

Примеры см. в разделе ALTER TABLE (Transact-SQL).

См. также

Справочник

ALTER TABLE (Transact-SQL)

Другие ресурсы

Управление ограничениями, идентификаторами и триггерами с помощью параметра «NOT FOR REPLICATION»

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое
  • Уточнено поведение предложения IDENTITY при использовании для добавления нового столбца идентификаторов.
  • Уточнено, что существующий столбец таблицы для добавления свойства IDENTITY изменить нельзя.