이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

IBSurgeon 라이브러리

Firebird 2.0에서 별칭 처리 및 모호한 필드 감지

Dmitry Yemanov, 2007년 11월 9일

Firebird 2.0에서 별칭 처리와 모호한 필드 감지 기능이 개선되었습니다.

변경 사항:

a) 테이블에 별칭이 있는 경우 해당 별칭을 사용하거나 아예 별칭을 사용하지 않아야 하며, 테이블 이름만 사용하는 것은 더 이상 유효하지 않습니다.

b) 한정자 없는 필드는 이제 더 높은 범위 수준에서 사용할 수 있습니다. 자체 범위 수준이 먼저 확인되며 모호한 필드 검사는 범위 수준에서 수행됩니다.

작성자:

Arno Brinkman

예제:

a)

별칭이 있는 경우 해당 별칭을 사용하거나 아예 별칭을 사용하지 않아야 합니다.

이 쿼리는 FB1.5 및 이전 버전에서 허용되었습니다:

SELECT

RDB$RELATIONS.RDB$RELATION_NAME

FROM

RDB$RELATIONS R

하지만 이제 “RDB$RELATIONS.RDB$RELATION_NAME” 필드를 찾을 수 없다는 오류를 올바르게 보고합니다.

다음을 사용하세요(권장):

SELECT

R.RDB$RELATION_NAME

FROM

RDB$RELATIONS R

또는 다음 문:

SELECT

RDB$RELATION_NAME

FROM

RDB$RELATIONS R

아래 문은 이제 하위 선택과 업데이트 대상 테이블의 FieldID를 올바르게 사용합니다:

UPDATE

TableA

SET

FieldA = (SELECT SUM(A.FieldB) FROM TableA A WHERE A.FieldID = TableA.FieldID)

Firebird에서는 업데이트 문에 별칭을 지정할 수 있지만, 다른 많은 데이터베이스 공급업체에서는 이를 지원하지 않습니다. 이러한 SQL 문은 이제 다른 SQL 데이터베이스 제품 간에 더 잘 호환됩니다.

이 예제는 FB1.5 및 이전 버전에서 올바르게 실행되지 않았습니다:

SELECT

RDB$RELATIONS.RDB$RELATION_NAME,

R2.RDB$RELATION_NAME

FROM

RDB$RELATIONS

JOIN RDB$RELATIONS R2 ON

(R2.RDB$RELATION_NAME = RDB$RELATIONS.RDB$RELATION_NAME)

RDB$RELATIONS에 90개의 레코드가 포함된 경우 90 * 90 = 8100개의 레코드를 반환했지만, FB2.0에서는 올바르게 90개의 레코드를 반환합니다.

b)

이것은 FB1.5에서 실패했지만 FB2.0에서는 가능합니다:

SELECT

(SELECT RDB$RELATION_NAME FROM RDB$DATABASE)

FROM

RDB$RELATIONS

하위 선택에서의 모호성 검사. 아래 쿼리는 FB1.5에서 모호성을 보고하지 않고 실행되었지만 FB2.0에서는 보고합니다:

SELECT

(SELECT

FIRST 1 RDB$RELATION_NAME

FROM

RDB$RELATIONS R1

JOIN RDB$RELATIONS R2 ON

(R2.RDB$RELATION_NAME = R1.RDB$RELATION_NAME))

FROM

RDB$DATABASE