使用同義字 (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