insert into TABLO_ADI (ALAN1, ALAN2)
values
(:DEGISKEN1, EGISKEN2);
şeklinde bi procedür ile SP ile TABLO_ADI tablosuna yeni kayıt yaptırıyorum .. Tabloyu açıp kapamama rağmen yeni eklenen kayıtları göremiyorum ..yeni kayıtları ancak database açılıp kapandıktan sonra görebiliyorum .. Database açıp kapamadan kayıtları görebilmenin bi yolu olması lazım .. yardımcı olursanız sevinirim ..
Procedur ile eklenen kaydın çalışma anında görlülememesi
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
farklı transactionlar tarafından yapılmış ya da değiştirilmiş kayıtlar sadece commit[retaining] yapıldığında diğerleri tarafından görülebilir.
hatta görülmeyebilir de, eğer snopshot transaction açtıysan.
hatta görülmeyebilir de, eğer snopshot transaction açtıysan.
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org
VT üzerinde yapılan kayıt işlemlerinden diğer kullanıcıların haberdar olabilmesi için yapılacak işlem ilgili tablo için oluşturacağın bir TRIGGER ile
ile VT tarafından tetikleyip, Delphi tarafından da bu yayınlanan event / olay ı IBEventAlert ile yakalamak ve yakalayınca yapmak istediklerini yapmak..
viewtopic.php?t=12515&highlight=postevent
Daha fazla bilgi için POST_EVENT anahtar kelimeleri ile
Kod: Tümünü seç
CREATE TRIGGER TRI_TABLO1 FOR TABLO1
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
BEGIN
POST_EVENT 'TABLO1_DEGISTI';
END
viewtopic.php?t=12515&highlight=postevent
Daha fazla bilgi için POST_EVENT anahtar kelimeleri ile
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
- Terminator
- Üye
- Mesajlar: 313
- Kayıt: 13 Ara 2005 01:45
- Konum: İzmir, ama Aydın Efesi!
Re: Procedur ile eklenen kaydın çalışma anında görlülememesi
Arkadaşlar,zalimsevki yazdı:insert into TABLO_ADI (ALAN1, ALAN2)
values
(:DEGISKEN1, EGISKEN2);
şeklinde bi procedür ile SP ile TABLO_ADI tablosuna yeni kayıt yaptırıyorum .. Tabloyu açıp kapamama rağmen yeni eklenen kayıtları göremiyorum ..yeni kayıtları ancak database açılıp kapandıktan sonra görebiliyorum .. Database açıp kapamadan kayıtları görebilmenin bi yolu olması lazım .. yardımcı olursanız sevinirim ..
zalimin sorunu yeni yapılan kayıt ihbarını almak değil.
dikkat ederseniz, diğer transactiondan dataseti kapatıp açtığı halde
yeni kayıtları göremiyor.
1. yapılan kayıt henüz commit edilmemiş olabilir.
2. kapatılıp açılan ve tazelenmesi beklenen datasetin transactionın izolasyon seviyesi snapshottur ve transaction kapatılıp açılmadan, kendisinden sonra yapılan hiçbir işlemi kesinlikle göremez. bu bir yalıtım modudur ve bazı operasyonlar için çok kritik gereklidir.
3.Eğer, kayıt yapan procedure ile tazelenen dataset aynı connection-transaction içinde ise, yeniliklerin gelmemesi imkansızdır.
4.Event kullanarak tazeleme uyarısı yapmak en doğrusudur. fakat
dikkat edilmesi gereken, event mesajının anında gönderilmediğidir.
sadece commitlenince gönderilir. ama user exceptionlar anında gider çünkü bir kesilme emridir. Ve ayrıca kaydı işleyenle mesajı bekleyenin
aynı transactionda olması çok gereksizdir. aynı transaction bir bütündür ve yapılan herşey son ana kadar ortaktır. sadece bufferlanmış eski- bayat datasetlere dikkat etmek gerekir, onlar kendi kendine başka bir noktadan yapılan değişikliği algılayamaz hiçbir sistemde.
vs vs...
Firebird Foundation Member #208
http://www.firebirdsql.org
http://www.firebirdsql.org