sp_rename (Transact-SQL)
變更目前資料庫中之使用者建立物件的名稱。這個物件可以是資料表、索引、資料行、別名資料類型或 Microsoft .NET Framework Common Language Runtime (CLR) 使用者自訂類型。
注意: |
---|
變更物件名稱的任何部份,可能破壞指令碼和預存程序。我們建議您不要使用陳述式來重新命名預存程序、觸發程序、使用者自訂函數或檢視;相反地,請卸除物件,再利用新名稱來重新建立它。 |
語法
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),預設值是 NULL,它可以是下列值之一。
值 | 描述 |
---|---|
COLUMN |
要重新命名的資料行。 |
DATABASE |
使用者自訂資料庫。當重新命名資料庫時,需要這個物件類型。 |
INDEX |
使用者自訂索引。 |
OBJECT |
sys.objects 中的追蹤類型項目。例如,您可以利用 OBJECT 來重新命名物件,其中包括條件約束 (CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、使用者資料表和規則。 |
USERDATATYPE |
執行 CREATE TYPE 或 sp_addtype 來加入的別名資料類型或 CLR 使用者自訂類型。 |
傳回碼值
0 (成功) 或非零值 (失敗)
備註
您只能變更目前資料庫中的物件或資料類型的名稱。您無法改變大部份系統資料類型和系統物件的名稱。
每當重新命名 PRIMARY KEY 或 UNIQUE 條件約束時,sp_rename 都會自動重新命名相關聯的索引。如果是重新命名的索引繫結於 PRIMARY KEY 條件約束,sp_rename 也會自動重新命名 PRIMARY KEY 條件約束。
您可以利用 sp_rename 來重新命名主要和次要 XML 索引。
重新命名預存程序、函數、檢視或觸發程序,不會變更 sys.sql_modules 目錄檢視 definition 資料行中對應的物件名稱。因此,我們建議您不要利用 sp_rename 來重新命名這些物件類型。相反地,請卸除物件,再利用它的新名稱來重新建立物件。
重新命名資料表或資料行之類的物件,不會自動重新命名指向這個物件的參考。您必須手動修改任何參考重新命名之物件的物件。例如,如果您重新命名資料表資料行,且有觸發程序參考這個資料行,您必須修改觸發程序來反映新的資料行名稱。在重新命名物件之前,請利用 sys.sql_dependencies 來列出其相依性。
權限
若要重新命名物件、資料行和索引,需要物件的 ALTER 權限。若要重新命名使用者類型,需要這個類型的 CONTROL 權限。若要重新命名資料庫,需要系統管理員 (sysadmin) 或資料庫建立者 (dbcreator) 固定伺服器角色中的成員資格。
範例
A. 重新命名資料表
下列範例將 SalesTerritory
資料表重新命名成 SalesTerr
。
USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. 重新命名資料行
下列範例會將 SalesTerritory
資料表中的 TerritoryID
資料行重新命名成 TerrID
。
USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. 重新命名索引
下列範例會將 IX_ProductVendor_VendorID
索引重新命名成 IX_VendorID
。
USE AdventureWorks;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. 重新命名別名資料類型
下列範例會將 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)
Database Engine 預存程序 (Transact-SQL)