trigger exception commit yapmıyor

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

trigger exception commit yapmıyor

Mesaj gönderen musti »

s.a
Triger icinde bir hata gonderince insert icinde yapılanlar commit olmuyor.

Position da sıralama yapıyorum
0 da insert table var
1 eğer şartlar tutuyorsa exception hataver var

ne olursa olsun triger Update position 0 da inser table (.... ) baska bir table birseyler yazıyorum.
ama position 1 exeption cıkarsa 0 daki insert commit olmuyor
bunu procedurle (triger icinden EXECUTE PROCEDURE ) denedim yine olmadı. ne yapmam lazım

teşekkür ederim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: trigger exception commit yapmıyor

Mesaj gönderen freeman35 »

yanlış hatırlamıyorsam trigger position 0 nezaman istersen yap demek eğer öncelik sırası kullanacaksan 1 den başlatıp bir dene
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Re: trigger exception commit yapmıyor

Mesaj gönderen musti »

onuda yaptım olmadı.
Olay commit den geçiyor abi,
exeption aldığı zaman commit gerçekleşmiyor bundan dolayı bir onceki triggerda insert table olduğu halde sonraki trigger da (position 2 de yani) transaction commit olmadığında yazamıyor.


Trigger icinde commit deme olsa cozulebilir gibi geldi bana
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: trigger exception commit yapmıyor

Mesaj gönderen freeman35 »

exeption gördüğü yerde commit etmez o işlem yarım bırakılır, sen ilk trigger da hata verdirtip ona göre işlem yaptırmayı istiyorsan bunu delphi tarafında yapabilirsin. Zaten bana delphi tarafındada exception la program yönlendirmek hep arabayı duvara vurarak hedefe yönlendirmeye benzemiştir :)
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Re: trigger exception commit yapmıyor

Mesaj gönderen musti »

abi,
yarım bırakmıyor yarım bıraksa işim çözülür. önceki trigerdakilerinde commit olmasını engelliyor.
bunu delphi de yapmamam ille triger icinde yapmam gerekiyor.

teşekkür ederim.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: trigger exception commit yapmıyor

Mesaj gönderen rsimsek »

Trigger demek olayın içi demek. Dolaysıyla oradaki bir exception doğal olarak, tutarlılık açısından olayı başırılı bir şekilde sonlandırmaya engeldir. Tasarımı bu şekilde kurgulamak lazım. Yoksa hata veren kısım ayrılıp diğer kısım çalıştırılıp commit lendikten sonra da stored procedure ile yapılabilir diye düşünüyorum.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: trigger exception commit yapmıyor

Mesaj gönderen freeman35 »

yarımdan kastettiğimde oydu ben yanlış yazdım, işlem gerçekleştirilmez. Sen bi tam olarak ne yapmaya çalıştığını yaz. 1. triggerda ne yapıyorsun, yani kodlarını yaz field tiplerini yaz bizde burdan amiral battı oynamayalım :)
trigger yada SP içinde yada FB içindeki herhangi bir işlem yani transaction açıldığından itibaren yapılan nekadar işlem varsa herhangi birisinden hata oluşursa, transaction içinde yapılmış tüm işlemler iptal edilir.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Re: trigger exception commit yapmıyor

Mesaj gönderen musti »

:) amiral battı
abi,
Yaptıgım işlem şu.
table benim istemedim bir şart ile update yapmak istenmiş ise bunu logunu tutup bu olaya müsade etmemek.
=======================
update new triger oluşturup position 1 diyorum ve
----
SELECT gelen from gelenTable
WHERE id=23
into : prcn;
if(prcn!='Oldu' )
THEN
BEGIN
INSERT INTO PLOG
(ISLEM,ZAMAN,FISNO,ISLEM_TARIHI,KOD,ACIKLAMA,KULLANICI,) values
('IZINSIZ','now',OLD.FISNO,OLD.FIS_TARIHI,OLD.KOD,'Gecersiz bir işlem yapıldı ve buna müsade edilmedi',old.USER);
end


=========================
ikinci tiriger oluşturdum yine
update new triger oluşturup position 2 diyorum ve
---
SELECT gelen from gelenTable
WHERE id=23
into : prcn;
if(prcn!='Oldu' )

THEN EXCEPTION guvenlik_hatasi;


birinci tigerde sorguluyor ve şarta uymaz ise insert ediyorum logomu ikinci tigerdada hata verdiyorum ki bu işleme musade etmesin ama hata yani excepiton verince ilk tigerda insert olmuyor.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: trigger exception commit yapmıyor

Mesaj gönderen freeman35 »

anahtar kelime "TRANSACTION START ve/veya SET TRANSACTION" firebird help lerinde araştır db içinde transaction kullanımı. benim hiç ihtiyacım olmadı, ama senin yapmak istediğinde kesinlikle gerekli. işlemi db tarafında iptal edeceksen, işlemi iptal etmeden önce içinde olduğun transactiondan başka bi transaction açıp işlermleri yapıp onu commit edip kapatıp, exception raise ettiğinde diğer ilk işlem tamam iptal edilir ama unutma o transaction da açıktır yayıntı yapmasın rollback et
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla