共用方式為


使用同義字 (Database Engine)

您可以使用同義字在數個 SQL 陳述式和運算式內容中取代其參考的基底物件。下表包含這些陳述式及運算式內容的清單:

SELECT

INSERT

UPDATE

DELETE

EXECUTE

子 SELECT

當您正在先前陳述的內容中使用同義字時,基底物件會受影響。例如,如果同義字參考的基底物件是資料表,而且您將資料列插入同義字,則實際上您是將資料列插入參考的資料表。

[!附註]

您無法參考位於連結伺的服器上的同義字。

您可以使用同義字做為 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