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


Инструкция 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
    Имя таблицы, которую нужно изменить.

    ms174123.note(ru-ru,SQL.100).gifПримечание.
    Имена таблиц должны соответствовать правилам для идентификаторов. table_name должно быть уникальным для данной базы данных. table_name может содержать до 128 символов.

  • ALTER COLUMN
    Указывает, что определенный столбец будет изменен или модифицирован.
  • column_name
    Имя столбца в таблице. Имена столбцов должны соответствовать правилам для идентификаторов и быть уникальными в таблице.
  • data_type
    Задает тип данных в столбце. Дополнительные сведения о типах данных см. в разделе Типы данных.
  • DEFAULT
    Указывает значение для столбца, если оно не было явно задано во время вставки. Определения DEFAULT можно применять к любому столбцу, за исключением тех, которые определены свойством IDENTITY. Определения DEFAULT удаляются, когда таблица удаляется из памяти. По умолчанию можно использовать только значение константы, например символьную строку или функцию даты.
  • IDENTITY
    Указывает, что новый столбец является столбцом идентификаторов. При добавлении новой строки в таблицу Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) присваивает столбцу добавочное значение. Столбцы идентификаторов обычно используются в сочетании с ограничениями 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 3.5 создает имя ограничения.
  • PRIMARY KEY
    Ограничение, с помощью уникального индекса устанавливающее целостность сущностей в одном или нескольких столбцах. В таблице можно создать только одно ограничение PRIMARY KEY.
  • UNIQUE
    Ограничение, с помощью уникального индекса обеспечивающее целостность сущностей в одном или нескольких столбцах. Столбцы в ограничении UNIQUE могут иметь значение NULL, но каждому столбцу можно задать только одно значение NULL. В таблице возможно наличие нескольких ограничений UNIQUE.

    ms174123.note(ru-ru,SQL.100).gifПримечание.
    SQL Server Compact 3.5 может использовать индексы для введения ограничений 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 3.5 возвращает ошибку и выполняется откат обновления указываемой строки в родительской таблице.

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

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

Если же указан параметр NO ACTION, SQL Server Compact 3.5 возвращает ошибку и проводит откат обновления ссылочной строки в таблице 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