Merge
Merge öneki, yüklenen tablonun başka bir tabloyla birleştirilmesi gerektiğini belirtmek için koddaki bir LOAD veya SELECT deyimine eklenebilir. Bu ayrıca, bu deyimin bir kısmi yeniden yüklemede çalıştırılması gerektiğini belirtir.
Tipik kullanım durumu, bir değişiklik günlüğü yüklediğinizde ve inserts, updates ile deletes öğesini mevcut bir tabloya uygulamak için bunu kullanmak istediğiniz zamandır.
Söz Dizimi:
Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)
Normal (kısmi olmayan) bir yeniden yükleme sırasında, Merge LOAD yapısı normal bir Load deyimi olarak çalışır, ancak eski, kullanılmayan kayıtları ve silinmek üzere işaretlenmiş kayıtları kaldırma ek işlevselliğini içerir. Load ifadesinin ilk alanı işlem hakkında bilgi içermelidir: Insert, Update veya Delete.
Yüklenen her kayıt için, kayıt tanımlayıcısı daha önce yüklenen kayıtlarla karşılaştırılır ve yalnızca en son kayıt (sıra numarasına göre) korunur. En son kayıt Delete ile işaretlenirse, hiçbiri korunmaz.
Concatenate öneki kullanılıyorsa veya aynı alan kümesine sahip bir tablo zaten varsa, değiştirilecek ilgili tablo bu olacaktır Aksi takdirde, Merge LOAD yapısının sonucu yeni bir tabloda depolanır.
Concatenate öneki kullanılırsa, ortaya çıkan tablo, Merge için giriş olarak kullanılan değişiklik günlüğünden daha fazla alana sahip olabilir.
Kısmi yeniden yükleme işlemi de tam yeniden yükleme ile aynı şeyi yapar. Tek fark, Merge LOAD yapısının hiçbir zaman yeni bir tablo oluşturmayacak olmasıdır. Her zaman önceki komut dosyası yürütmesinden gelen, değiştirilecek bir tablo vardır.
Yüklenen değişiklik günlüğü toplanmış bir günlükse, yani zaten yüklenmiş olan değişiklikleri içeriyorsa, SequenceNoVar parametresi giriş verilerinin miktarını sınırlamak için bir Where cümlesinde kullanılabilir. Ardından Merge LOAD yapısının yalnızca SequenceNoField alanının SequenceNoVar değerinden büyük olduğu durumlarda kayıtları yüklemesi sağlanabilir. Tamamlandığında, Merge LOAD, SequenceNoField alanında görülen maksimum değerle, SequenceNoVar için yeni bir değer atayacaktır.
Bağımsız Değişkenler:
Bağımsız Değişken | Açıklama |
---|---|
only | İfadenin yalnızca kısmi yeniden yüklemeler sırasında yürütülmesi gerektiğini belirten isteğe bağlı bir niteleyici. Normal (kısmi olmayan) yeniden yüklemeler sırasında dikkate alınmamalıdır. |
SequenceNoField | İşlemlerin sırasını tanımlayan bir sıra numarası veya zaman damgası içeren alanın adı. |
SequenceNoVar |
Birleştirilecek tablonun SequenceNoField maksimum değerinin atandığı değişkenin adı. |
ListOfKeys | Birincil anahtarı belirten virgülle ayrılmış alan adları listesi. |
operation | Load ifadesinin ilk alanı şu işlemi içermelidir: Insert, Update veya Delete. ‘i’, ‘u’ ve ‘d’ öğesi de kabul edilir. |