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


Инструкция ALTER TABLE (SQL Server Compact)

Изменяет определение таблицы путем изменения, добавления или удаления столбцов и ограничений.

Синтаксис

ALTER TABLE table_name
    ALTER COLUMN column_name 
   {
    type_name[({precision[.scale]})][NULL|NOT NULL]
   {DROP DEFAULT 
   | SET DEFAULT constant_expression 
   | IDENTITY [ ( seed , increment ) ]
   } 
| ADD 
   { < column_definition > | < table_constraint > } [ ,...n ] 
| DROP 
   { [ CONSTRAINT ] constraint_name 
   | COLUMN column }
] }
< column_definition > ::= 
   { column_name data_type } 
   [ [ DEFAULT constant_expression ] 
      | IDENTITY [ ( seed , increment ) ] 
   ] 
   [ROWGUIDCOL]
   [ < column_constraint > ] [ ...n ] ]
< column_constraint > ::= 
   [ NULL | NOT NULL ] 
   [ CONSTRAINT constraint_name ] 
   { 
      | { PRIMARY KEY | UNIQUE } 
      | REFERENCES ref_table [ (ref_column) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ]
   }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      | FOREIGN KEY 
        ( column [ ,...n ] )
        REFERENCES ref_table [ (ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
      [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] 
   }

Аргументы

  • table_name
    Имя таблицы, которую нужно изменить.

    Примечание

    Имена таблиц должны соответствовать правилам для идентификаторов. table_name должно быть уникальным для данной базы данных. table_name может содержать до 128 символов.

  • ALTER COLUMN
    Указывает, что определенный столбец будет изменен или модифицирован.

  • column_name
    Имя столбца в таблице. Имена столбцов должны соответствовать правилам для идентификаторов и быть уникальными в таблице.

  • data_type
    Задает тип данных в столбце. Дополнительные сведения о типах данных см. в разделе Типы данных.

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

  • IDENTITY
    Указывает, что новый столбец является столбцом идентификаторов. При добавлении новой строки в таблицу MicrosoftSQL Server Compact присваивает столбцу добавочное значение. Столбцы идентификаторов обычно используются в сочетании с ограничениями PRIMARY KEY для уникальной идентификации строк в таблице. Свойство IDENTITY может быть назначено только столбцам int. В таблице можно создать только один столбец идентификаторов. Ограниченные значения по умолчанию и ограничения DEFAULT не могут использоваться в столбце идентификаторов. Необходимо указывать либо оба значения seed и increment, либо ни то, ни другое. Если ни одно из значений не указано, то действительно значение по умолчанию — (1,1).

  • seed
    Значение, используемое в первой строке, которая загружается в таблицу.

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

  • ADD
    Указывает, что добавлено одно или несколько определений столбца или ограничений таблицы.

  • DROP { [CONSTRAINT] constraint_name| COLUMN column}
    Указывает, что из таблицы будет удален constraint_name или column_name.

  • ROWGUIDCOL
    Указывает, что новый столбец является столбцом глобальных уникальных идентификаторов строк. В качестве столбца ROWGUIDCOL в таблице можно назначить только один столбец uniqueidentifier. Свойство ROWGUIDCOL может быть назначено только столбцу uniqueidentifier.

    Свойство ROWGUIDCOL автоматически создает значения для новых строк, вставленных в таблицу.

  • NULL | NOT NULL
    Ключевые слова, указывающие, разрешены ли в столбце нулевые значения. Значение NULL не является ограничением, но может быть определено подобным образом в виде NOT NULL.

  • CONSTRAINT
    Дополнительное ключевое слово, указывающее начало определения ограничений PRIMARY KEY, UNIQUE или FOREIGN KEY. Ограничения — это особые свойства, принудительно обеспечивающие целостность данных и создающие для таблицы и ее столбцов индексы особых типов.

  • constraint_name
    Имя ограничения. Ограничение constraint_name является дополнительным и должно быть уникальным для данной базы данных. Если ограничение constraint_name не указано, SQL Server Compact создает имя ограничения.

  • PRIMARY KEY
    Ограничение, с помощью уникального индекса устанавливающее целостность сущностей в одном или нескольких столбцах. В таблице можно создать только одно ограничение PRIMARY KEY.

  • UNIQUE
    Ограничение, с помощью уникального индекса обеспечивающее целостность сущностей в одном или нескольких столбцах. Столбцы в ограничении UNIQUE могут иметь значение NULL, но каждому столбцу можно задать только одно значение NULL. В таблице возможно наличие нескольких ограничений UNIQUE.

    Примечание

    SQL Server Compact может использовать индексы для введения ограничений PRIMARY KEY и UNIQUE. Полагаться на эту возможность либо пытаться изменить какие-либо индексы, созданные как часть ограничения, не рекомендуется.

  • FOREIGN KEY...REFERENCES
    Ограничение, обеспечивающее ссылочную целостность данных в столбце. Ограничение FOREIGN KEY требует, чтобы каждое значение в данном столбце существовало и в указанном столбце в ссылочной таблице.

  • ref_table
    Имя таблицы, на которую ссылается ограничение FOREIGN KEY.

  • ( ref_column [ ,... n] )
    Столбец или список столбцов таблицы, на которые ссылается ограничение FOREIGN KEY.

  • ON DELETE {CASCADE | NO ACTION |SET DEFAULT | SET NULL}
    Определяет действие, которое будет применено к строке в создаваемой таблице, если у этой строки имеется ссылочная связь, а строка, на которую она ссылается, удалена из родительской таблицы. Значение по умолчанию — NO ACTION. Дополнительные сведения см. в «Замечаниях» далее в этом разделе.

  • ON UPDATE {CASCADE | NO ACTION | SET DEFAULT | SET NULL}
    Определяет действие, которое будет применено к строке в создаваемой таблице, если у этой строки имеется ссылочная связь, а строка в родительской таблице, на которую она ссылается, обновлена. Значение по умолчанию — NO ACTION. Дополнительные сведения см. в «Замечаниях» далее в этом разделе.

  • column
    Столбец или список столбцов, заключенные в скобки, которые используются в ограничениях таблицы для обозначения столбцов, использованных в определении ограничения.

  • n
    Заменитель места, указывающий, что предшествующий элемент может повторяться n раз.

Замечания

При значениях ON DELETE или ON UPDATE и указанном параметре CASCADE обновление строки в ссылающейся таблице происходит, если обновлена соответствующая строка в родительской таблице. Если указан параметр NO ACTION, SQL Server Compact возвращает ошибку и выполняется откат обновления указываемой строки в родительской таблице.

Например, в базе данных может быть две таблицы — A и B. Таблица А имеет ссылочную связь с таблицей В: внешний ключ A.ItemID ссылается на первичный ключ B.ItemID.

Если инструкция UPDATE выполняется в строке в таблице B, а для ключа A.ItemID указано действие ON UPDATE CASCADE, SQL Server Compact проводит поиск одной или нескольких зависимых строк в таблице A. Если таковые существуют, обновляются и зависимые строки в таблице A, и ссылочная строка в таблице B.

Если же указан параметр NO ACTION, SQL Server Compact возвращает ошибку и проводит откат обновления ссылочной строки в таблице B при наличии по крайней мере одной строки в таблице A, которая на нее ссылается.

Примеры кода

А. Изменение начального значения и значения приращения в столбце идентификатора

В следующем примере показано, как изменить начальное значение и значение приращения в столбце идентификатора.

CREATE TABLE MyCustomers (CustID INTEGER IDENTITY (100,1) PRIMARY KEY, CompanyName NvarChar (50));

INSERT INTO MyCustomers (CompanyName) VALUES ('A. Datum Corporation');

ALTER TABLE MyCustomers ALTER COLUMN CustId IDENTITY (200, 2);

Б. Добавление в столбец значения по умолчанию

В следующем примере показано, как присвоить значение по умолчанию столбцу названия компании.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'

В. Удаление значения по умолчанию из столбца

В следующем примере показано, как удалить значение по умолчанию из столбца названия компании.

ALTER TABLE MyCustomers ALTER COLUMN CompanyName DROP DEFAULT