동의어 사용(데이터베이스 엔진)
여러 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