Инструкция 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
Указывает, что новый столбец является столбцом идентификаторов. При добавлении новой строки в таблицу 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.Примечание. 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