シノニムの使用 (データベース エンジン)
いくつかの SQL ステートメントや式のコンテキストでは、参照先のベース オブジェクトの代わりにシノニムを使用できます。次の表に、これに該当するステートメントや式のコンテキストを示します。
SELECT |
INSERT |
UPDATE |
DELETE |
EXECUTE |
副選択式 |
上記のコンテキストでシノニムを扱っているときは、ベース オブジェクトが影響を受けます。たとえば、シノニムが参照するベース オブジェクトがテーブルの場合に、シノニムに行を挿入すると、実際に参照先のテーブルに行が挿入されます。
注意 |
---|
リンク サーバー上のシノニムを参照することはできません。 |
OBJECT_ID 関数のパラメータとしてシノニムを使用できます。ただし、この関数はベース オブジェクトではなく、シノニムのオブジェクト 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 制約 |
計算列 |
既定式 |
ルール式 |
スキーマ バインド ビュー |
スキーマ バインド関数 |
スキーマ バインド関数の詳細については、「ユーザー定義関数の作成 (データベース エンジン)」を参照してください。
例
次の例では、この後の例で使用するシノニムを作成しています。
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