Инструкция 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 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