|
Örnek: Ana Kayıt/Detay Kayıtlar Güncellemesi |
|
|
Bir tabloya, diğer bir tablodaki bir kayda bağımlı kayıtlar eklenmesi gerektiğini varsayalım. Örneğin; sipariş edilen ürünlerin kayıtları ve sipariş kaydı. Bir siparişi bütünüyle veritabanına kaydedebilmek için genellikle sipariş tablosuna bir, sipariş detayları tablosuna ise bir ya da daha fazla kayıt eklemek ve bu kayıtları, sipariş tablosuna eklenen kayıt ile ilişkilendirmek gerekir. siparis (Ana Tablo)
NO MUSTERI_NO SATICI_NO SIPARIS_TARIHI -------- ----------- --------------- --------------- 1 10 3 2003-10-10
siparis_detay (Detay Tablosu)
NO SIPARIS_NO URUN_NO MIKTAR BIRIM_FIYAT -------- ----------- ---------- --------- ---------- 1 1 12 2 20.00 2 1 20 5 30.00 3 1 23 3 15.00
siparis.NO ve siparis_detay.SIPARIS_NO alanları üzerinden; bu iki tablo arasında "one-to-many" türünde bir ilişki vardır. Şimdi bu kayıtları, veritabanına bir defada nasıl ekleyebileceğimizi görelim. Bunun için; her birinin içinde, bir RelDBUpdateProcess elemanı olan iki ayrı işlem bloğuna ihtiyaç var.
Birinci işlemin "Güncelleme Sorgusu (SQL)" özelliğinde tanımlanış olan, "INSERT INTO siparis ..." ifadesi ile siparis tablosuna bir kayıt eklenecek ve "selecT @@IDENTITY AS v:SIPARIS_NO" ifadesiyle ise, eklenen kaydın numarası SIPARIS_NO adlı havuz değişkenine aktarılacaktır. Bakınız selecT Sorgusu ile MScript sembollerine veri aktarma Yukarıdaki örnek verileri kullanarak, tüm işletim şu şekilde olacaktır.
Siparis_Tablosuna_Ekleme İşlemi INSERT INTO siparis (MUSTERI_NO, SATICI_NO, SIPARIS_TARIHI) VALUES(10, 3, '2003-10-10');
selecT @@IDENTITY AS v:SIPARIS_NO;
SIPARIS_NO adlı havuz değişkeninin değeri 1 olacaktır.
SiparisDetay_Tablosuna_Ekleme İşlemi 1. Ürün INSERT INTO siparis_detay (SIPARIS_NO, URUN_NO, BIRIM_FIYAT, MIKTAR) VALUES(1, 12, 2, 20.00);
2. Ürün INSERT INTO siparis_detay (SIPARIS_NO, URUN_NO, BIRIM_FIYAT, MIKTAR) VALUES(1, 20, 5, 30.00);
3. Ürün INSERT INTO siparis_detay (SIPARIS_NO, URUN_NO, BIRIM_FIYAT, MIKTAR) VALUES(1, 23, 3, 15.00);
Oracle Veritabanı Oracle veritabanında, eklenen kayıtları otomatik numaralandırma özelliği yoktur. Onun yerine; "sequence" adlı verilen ve otomatik olarak sıra numarası üreten nesneler kullanılır. Bu nedenle veritabanında, "Sequences" altında her bir tablo için sıra numarası üretecek olan "siparis_sequence" ve "siparis_detay_sequence" adlı iki sıralama nesnesi oluşturulmalıdır. Şimdi, işlemlerde kullanılan güncelleme sorgularını Oracle veritabanı yeniden düzenleyelim:
|