Использование синонимов (компонент Database Engine)
Изменения: 14 апреля 2006 г.
Можно использовать синонимы вместо их базового объекта, на который они ссылаются, в нескольких инструкциях SQL и контекстах выражения. Следующая таблица содержит список этих инструкций и контекстов выражения.
SELECT |
INSERT |
UPDATE |
DELETE |
EXECUTE |
Подзапросы выборки |
При работе с синонимами в сформулированных ранее контекстах будет затронут базовый объект. Например, если синоним ссылается на базовый объект, который является таблицей, и строка вставляется в синоним, то фактически строка вставляется в таблицу, на которую ссылается синоним.
Примечание. |
---|
Нельзя сослаться на синоним, который расположен на связанном сервере. |
Синоним можно использовать в качестве параметра функции OBJECT_ID; однако эта функция вернет идентификатор объекта для синонима, а не для базового объекта.
Нельзя ссылаться на синоним в инструкции DDL. Например, следующие инструкции, ссылающиеся на синоним dbo.MyProduct
, приведут к ошибке.
ALTER TABLE dbo.MyProduct
ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
ADD NewFlag int null');
Следующие инструкции разрешений связаны только с синонимом, а не с базовым объектом.
GRANT |
DENY |
REVOKE |
|
Синонимы не привязаны к схеме, и поэтому на них нельзя сослаться следующими привязанными к схеме контекстами выражения.
Ограничения CHECK |
Вычисляемые столбцы |
Выражения по умолчанию |
Выражения правил |
Привязанные к схеме представления |
Привязанные к схеме функции |
Дополнительные сведения о привязанных к схеме функциях см. в разделе Создание пользовательских функций (Database Engine).
Примеры
Следующий пример создает синоним, который будет использоваться в дальнейших примерах.
USE tempdb;
GO
CREATE SYNONYM MyAddressType
FOR AdventureWorks.Person.AddressType;
GO
Следующий пример вставляет строку в базовую таблицу, на которую ссылается синоним MyAddressType
.
USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO
Следующий пример демонстрирует, как на синоним можно сослаться в динамическом SQL.
USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO
См. также
Основные понятия
Синонимы (Database Engine)
Цепочки владения
Другие ресурсы
CREATE SYNONYM (Transact-SQL)
DROP SYNONYM (Transact-SQL)
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
14 апреля 2006 г. |
|