Bu sayfa makine çevirisidir. İngilizce orijinalini okuyun. English

IBSurgeon kütüphanesi

Firebird 2.0'da takma ad işleme ve belirsiz alan algılama

Dmitry Yemanov, 9-Nov-2007

Firebird 2.0’da takma ad (alias) işleme ve belirsiz alan tespiti iyileştirilmiştir.

Değişiklikler:

a) Bir tabloda takma ad varsa, bu takma ad kullanılmalı veya hiç takma ad kullanılmamalıdır; yalnızca tablo adı artık geçerli değildir.

b) Nitelik belirteci olmayan alanlar artık daha üst bir kapsam düzeyinde kullanılabilir. Kendi kapsam düzeyi önce kontrol edilir ve belirsiz alan kontrolü kapsam düzeyinde yapılır.

Yazar:

Arno Brinkman

Örnekler:

a)

Bir takma ad varsa, ya takma ad kullanılmalı ya da hiç takma ad kullanılmamalıdır.

Bu sorgu FB1.5 ve önceki sürümlerde izin veriliyordu:

SELECT

RDB$RELATIONS.RDB$RELATION_NAME

FROM

RDB$RELATIONS R

ancak artık “RDB$RELATIONS.RDB$RELATION_NAME” alanının bulunamadığına dair bir hata doğru şekilde raporlanacaktır.

Bunu kullanın (tercih edilen):

SELECT

R.RDB$RELATION_NAME

FROM

RDB$RELATIONS R

veya bu ifade:

SELECT

RDB$RELATION_NAME

FROM

RDB$RELATIONS R

Aşağıdaki ifade artık FieldID’yi alt sorgudan ve güncellenen tablodan doğru şekilde kullanacaktır:

UPDATE

TableA

SET

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

Firebird’de bir update ifadesine takma ad vermek mümkündür, ancak diğer birçok veritabanı satıcısı bunu desteklemez. Bu SQL ifadeleri artık diğer SQL veritabanı ürünleriyle daha iyi değiştirilebilir durumdadır.

Bu örnek FB1.5 ve önceki sürümlerde doğru çalışmıyordu:

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 kayıt içeriyorsa, 90 * 90 = 8100 kayıt döndürürdü, ancak FB2.0’da doğru şekilde 90 kayıt döndürecektir.

b)

Bu FB1.5’te başarısız oluyordu, ancak FB2.0’da mümkündür:

SELECT

(SELECT RDB$RELATION_NAME FROM RDB$DATABASE)

FROM

RDB$RELATIONS

Alt sorgularda belirsizlik kontrolü. Aşağıdaki sorgu FB1.5’te belirsizlik raporlamadan çalışıyordu, ancak FB2.0’da raporlayacaktır:

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