Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> trigger na tej samej tabeli
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Mam procedurę, ktora zmienia mi wartosc pola POLE na 4, ale tylko dla tych rekordów, których mają aktualnie wartosc pola 3.

Teraz przy UPDATE pola wywoluje trigger (before), ktory wykonuje mi powyższą procedurę, ale tylko wowczas, gdy nowa wartosc pola to 3. Czyli defacto nie ma zapętlenia żadnego, jednak oracle nie pozwala na takie numery. Czy mozna jakos trigger wywolac by lał na to i dzialał? Bo teraz oracle tak jakby podejrzewa ze moze byc zapetlenie, gdyz wywoluje trigger, a w nim wywoluje procedure ktora znowu mi ten sam trigger wzbudza. Jednak ten trigger z procedury nie wywola zadnych zmian, gdyz nowa wartosc pola to 4 nie 3.
Jak ktos zalapal oco biega i jakims cudem zna rozwiązanie to bardzo prosze o cynk.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
UPDATE danych nigdy nie pozwoli na ustawienie w POLU wartości "3"
czemu nie pozwoli? pozwoli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ja bede modyfikowal statusy. Chodzilo oto, ze procedura, ktora wywoluje trigger, zmienia status tylko na 4 a nigdy na 3. Ona zmienia z 3 na 4. Tak wiec bazka jest zaprojektowana ok. Jest to standardowa sytuacja, gdy mozesz miec cos opublikowanego. W danej chwili jednoczesnie moze byc ttlko jedna rzecz opublikowana (status=3). Gdy pojawia sie cos nowego do publikacji (cos dostaje status 3), to co bylo opublikowane przechodzi do archiwum (status 3 w innych rekordach zmienic na 4).

Cytat
Co do wywołania w triggerze procedury/funkcji która modyfikują tą samą tabele- to rzeczywiście Oracle na to nie pozwoli.
no i to juz wiemy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #3





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 6.12.2006, 16:12:36 ) *
czemu nie pozwoli? pozwoli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ja bede modyfikowal statusy. Chodzilo oto, ze procedura, ktora wywoluje trigger, zmienia status tylko na 4 a nigdy na 3. Ona zmienia z 3 na 4. Tak wiec bazka jest zaprojektowana ok. Jest to standardowa sytuacja, gdy mozesz miec cos opublikowanego. W danej chwili jednoczesnie moze byc ttlko jedna rzecz opublikowana (status=3). Gdy pojawia sie cos nowego do publikacji (cos dostaje status 3), to co bylo opublikowane przechodzi do archiwum (status 3 w innych rekordach zmienic na 4).

no i to juz wiemy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Czyli w tabeli masz zawsze tylko jedno pole POLE o wartości równej 3?
Czyli tak właściwie tylko zmieniasz jedno pole POLE z 3 na 4, pomijając fakt że na pewno będziesz chciał móc wybierać co jest wyświetlane. Chyba że tylko nowe INSERT rzeczy będą mieć 3 a w UPDATE zakażesz tego i w DELETE jeśli kasujesz to też musisz zmienić w którymś wartość pola POLE z 4 na 3 aby zawsze było coś wyświetlane (chyba że nie musi być zawsze).

Chociaż moim zdaniem dziwne to całkowite blokowanie, powinno dać się wyłączyć aby jak ktoś jest pewien kodu aby to zrobiła lae to chyba podejście aby baza była stabilna (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Hmm, przy UPDATE wywołujesz Triggera która przy znalezieniu POLE=3 wywołuje UPDATE a jak już robisz UPDATE to znów się wywołuje Triggera który się zapętla. Czy może ja źle myślę (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

EDIT: Mylę się w ostatnim akapicie bo nie zawsze jest wywoływane UPDATE a jak jest to tylko ze zmianą POLE=4 więc nie wywołuje kolejny raz funkcji.

Tak mnie to gryzie, więc napiszę po co Ci właściwie to pole POLE?
Przecież wystarczy mieć tabele która przechowuje aktualnie wyświetlany rekord, a tak masz x-1 nadmiarowych pól?! (bo przecież każde POLE=4 jest nadmiarowe)

Ten post edytował Sedziwoj 11.12.2006, 17:06:30
Go to the top of the page
+Quote Post

Posty w temacie
- nospor   trigger na tej samej tabeli   5.12.2006, 15:41:53
- - KILIUSZKIN   Znalazłem taką korespondecję : 1....   6.12.2006, 12:43:23
- - nospor   hmmm, ale to musze widok dodatkowy tworzyc?   6.12.2006, 12:51:41
- - php programmer   Troche głupie, ale może w triggerze zamiast zapyt...   6.12.2006, 13:46:56
- - nospor   @php programmer hehe, no jest to pewne rozwiązanie...   6.12.2006, 13:51:28
- - php programmer   Mam, tworzysz sobie drugą tabele (która nie zawie...   6.12.2006, 13:55:52
- - nospor   dzieki, ale ja wlasnie chcialem uniknac tworzenia ...   6.12.2006, 14:02:37
- - php programmer   OK jeszcze jedna próba, nie wiem czy to sie da w o...   6.12.2006, 14:04:20
- - nospor   no i ja wlasnie tak mam: w trigerze wywoluje proce...   6.12.2006, 14:06:27
- - php programmer   To może fukcja wywołana przez trigger zamist wykon...   6.12.2006, 14:19:31
- - nospor   hehe, nie. niezaleznie ile tych funkcji bedziesz m...   6.12.2006, 14:21:04
- - Synaps   Nie wiem czy dobrze zrozumiałem : - UPDATE danych...   6.12.2006, 16:05:36
- - nospor   CytatUPDATE danych nigdy nie pozwoli na ustawienie...   6.12.2006, 16:12:36
|- - Sedziwoj   Cytat(nospor @ 6.12.2006, 16:12:36 ) ...   11.12.2006, 17:23:04
- - Synaps   OK, skoro twierdzisz że logika jest poprawna ...   11.12.2006, 15:27:32
- - nospor   @Synaps wow Sek w tym, ze chcialem uniknac dodatk...   11.12.2006, 18:17:01
|- - Sedziwoj   Cytat(nospor @ 11.12.2006, 18:17:01 )...   11.12.2006, 18:39:09
|- - Synaps   Cytat(nospor @ 11.12.2006, 20:17:01 )...   12.12.2006, 03:09:11
- - nospor   CytatJak na razie widzę, że POLE ma dwa ...   11.12.2006, 18:50:50
- - KILIUSZKIN   Nie wiem czy to zadziała (jutro jak będę miał czas...   11.12.2006, 22:57:54
- - nospor   @KILIUSZKIN a wiesz że juz to probowalem zrob...   11.12.2006, 23:09:28
- - nospor   aaa, no tak, ta tablica mnie zmylila. Poki co z or...   12.12.2006, 08:45:23


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 13:00