동의어 사용(데이터베이스 엔진)

여러 SQL 문 및 식 컨텍스트에서 동의어를 해당 참조 기준 개체 대신 사용할 수 있습니다. 다음 표에서는 이러한 문 및 식 컨텍스트를 나열합니다.

SELECT

INSERT

UPDATE

DELETE

EXECUTE

하위 SELECT

앞에서 설명한 컨텍스트에서 동의어를 사용하면 기준 개체가 영향을 받습니다. 예를 들어 동의어가 테이블 기준 개체를 참조하며 동의어에 행을 삽입한 경우 실제로 참조되는 테이블에 행이 삽입됩니다.

[!참고]

연결된 서버에 있는 동의어는 참조할 수 없습니다.

동의어를 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 AdventureWorks2008R2.Person.AddressType;
GO

다음 예에서는 MyAddressType 동의어가 참조하는 기준 테이블에 열을 삽입합니다.

USE tempdb;
GO
INSERT INTO MyAddressType (Name)
VALUES ('Test');
GO

다음 예에서는 동적 SQL에서 동의어를 참조하는 방법을 보여 줍니다.

USE tempdb;
GO
EXECUTE ('SELECT Name FROM MyAddressType');
GO