Неявное поведение функции sp_rename

Неявное поведение функции sp_rename

В BOL описывается данная функция следующим образом:

Изменяет имя пользовательского объекта в текущей базе данных.
В следующем примере таблица SalesTerritory в схеме Sales переименовывается в SalesTerr.
USE AdventureWorks2012;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO

Если читать BOL очень внимательно, то ошибку можно не допустить, но часто мы бегло пробегаем документацию и додумываем работу некоторых механизмов самостоятельно. На днях я наблюдал попытку переименовать таблицу следующим образом:

EXEC [sys].[sp_rename]
    @objname = N'dbo.Whatever' ,
    @newname = N'dbo.Whatever_New'

Удивлению человека не было предела, когда он увидел результат:

2

 

 

 

 

Если бы документация была прочитана и понята полностью, то фраза

"Изменяет имя пользовательского объекта в текущей базе данных"

Могла подсказать нам, что с помощью данной процедуры мы меняем только имя объекта, без изменения схемы.

На данном примере я хотел продемонстрировать, как важно не просто прочитать документацию, но и немного задуматься.

 

Запись опубликована в рубрике Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: