sp_rename (Transact-SQL)
Изменяет имя пользовательского объекта в текущей базе данных. Этот объект может быть таблицей, индексом, столбцом, псевдонимом типа данных или определенным пользователем типом среды CLR Microsoft.NET Framework.
Внимание! |
---|
Изменение любой части имени объекта может разрушить сценарии и хранимые процедуры. Не рекомендуется использовать эту инструкцию для переименования хранимых процедур, триггеров, пользовательских процедур или представлений; следует удалить объект и создать его повторно с новым именем. |
Соглашения о синтаксисе в Transact-SQL
Синтаксис
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Аргументы
[ @objname = ] 'object_name'
Текущее полное или неполное имя пользовательского объекта или типа данных. Если переименуемый объект представляет собой столбец в таблице, то имя object_name должно быть указано в виде table.column. Если объект, который следует переименовать, представляет собой индекс, то имя object_name должно иметь вид table.index.Кавычки необходимы, только если указан объект с полным именем. Если указано полное имя, включая имя базы данных, то в качестве имени базы данных должно использоваться имя текущей базы данных. Аргумент object_name имеет тип nvarchar(776) и не имеет значения по умолчанию.
[ @newname = ] 'new_name'
Новое имя для указанного объекта. Имя new_name должно быть именем, состоящим из одной части, и соответствовать правилам для идентификаторов. Аргумент newname имеет тип sysname и не имеет значения по умолчанию.Примечание. Имена триггеров не могут начинаться с символов # или ##.
[ @objtype = ] 'object_type'
Тип объекта, который будет переименован. Аргумент object_type имеет тип varchar(13), не имеет значения по умолчанию и может принимать одно из следующих значений:Значение Описание COLUMN
Столбец, который будет переименован.
DATABASE
Пользовательская база данных. Этот тип объекта необходим при переименовании базы данных.
INDEX
Пользовательский индекс.
OBJECT
Элемент типа, отслеживаемого в представлении каталогов sys.objects. Например, значение OBJECT может быть использовано для переименования объектов с ограничениями (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), пользовательских таблиц и правил.
USERDATATYPE
Тип данных псевдонима или определенные пользователями типы среды CLR, добавленные выполнением инструкции CREATE TYPE или процедуры sp_addtype.
Значения кодов возврата
0 (успешное завершение) или ненулевое значение (неуспешное завершение)
Замечания
Изменить имя объекта или типа данных можно только в текущей базе данных. Имена большинства системных типов данных и системных объектов изменить нельзя.
Процедура sp_rename автоматически переименовывает ассоциированный индекс каждый раз при переименовании ограничения PRIMARY KEY или UNIQUE. Если переименованный индекс привязан к ограничению PRIMARY KEY, то ограничение PRIMARY KEY также автоматически переименовывается хранимой процедурой sp_rename.
Процедура sp_rename может использоваться для переименования первичных и вторичных XML-индексов.
Переименование хранимой процедуры, функции, представления или триггера не изменит имени соответствующего объекта в столбце definition представления каталога sys.sql_modules. Поэтому не рекомендуется использовать процедуру sp_rename для переименования объектов этих типов. Лучше удалить и создать объект повторно с новым именем.
Переименование такого объекта, как таблица или столбец не приводит к автоматическому переименованию ссылок на этот объект. Необходимо вручную изменить любые объекты, которые ссылаются на переименованный объект. Например, если переименован столбец таблицы и на этот столбец имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя столбца. Используйте представление каталога sys.sql_dependencies, чтобы составить список зависимостей для объекта перед его переименованием.
Разрешения
Для переименования объектов, столбцов и индексов требуется разрешение ALTER на объект. Для переименования определенных пользователем типов требуется разрешение CONTROL на тип. Для переименования базы данных требуется членство в фиксированных серверных ролях sysadmin или dbcreator
Примеры
А. Переименование таблицы
В следующем примере таблица SalesTerritory
переименовывается в SalesTerr
.
USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
Б. Переименование столбца
В следующем примере столбец TerritoryID
в таблице SalesTerritory
переименовывается в TerrID
.
USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
В. Переименование индекса
В следующем примере индекс IX_ProductVendor_VendorID
переименовывается в IX_VendorID
.
USE AdventureWorks;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
Г. Переименование псевдонима типа данных
В следующем примере псевдоним типа данных Phone
переименовывается в Telephone
.
USE AdventureWorks;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
См. также
Справочник
sys.sql_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Хранимые процедуры ядра СУБД (Transact-SQL)