![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@Synaps wow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Sek w tym, ze chcialem uniknac dodatkowych tabel, a u Ciebie z tego co czytam, to istnieje jedna dodatkowa. Ale dzieki. @Sedziwoj a czytajac Twojego posta to przez chwila zdurnialem i juz sam niemoglem dojsc oco mi chodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wydaje mi sie, ze jasno tu to opisalem: Cytat 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). Jasniej juz sie nie da.Cytat Tak mnie to gryzie, więc napiszę po co Ci właściwie to pole POLE? (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) 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) Po co mi tabela co bedzie trzymala tylko jeden rekord? U mnie tabela trzyma rekordy, kazdy z nich moze byc w roznym stanie, kazdy rekord moze w kazdej chwili zmienic swoj stan. O jakim nadmiarze mowisz? Podsumowujac: olalem triggery, bo widze ze na oraclu bez dodatkowych tabel/widokow sie nie obejdzie. To co mial robic trigger robie "recznie" w php. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@Sedziwoj a czytajac Twojego posta to przez chwila zdurnialem i juz sam niemoglem dojsc oco mi chodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Wydaje mi sie, ze jasno tu to opisalem: Jasniej juz sie nie da. (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Po co mi tabela co bedzie trzymala tylko jeden rekord? U mnie tabela trzyma rekordy, kazdy z nich moze byc w roznym stanie, kazdy rekord moze w kazdej chwili zmienic swoj stan. O jakim nadmiarze mowisz? Jak na razie widzę, że POLE ma dwa stany 3 i 4 więc oprócz jednego reszta ma 4. Więc dodawanie jednego pola tylko aby oznaczyć jeden rekord jest dla mnie bez sensu. Co do stanów przecież tylko jeden ma inny, to wynika z Twojej wypowiedzi i nic ponadto, że mogę się domyślać że oprócz stanu 3 i 4 może istnieć inny stan. Tu chodzi o podejście, w jednych tabelach masz tylko dane z identyfikatorami inne łączą je. Nie wiem czy tworzenie tabeli z jednym rekordem i do tego jedno polowym ma sens ale mniejszy ma dla mnie tworzenie nowego pola dla każdego rekordu gdy potrzeba tylko jeden wskazany. Przyznam projektowanie baz danych nie należy u mnie do rzeczy dobrze opanowanych ale nadal w tej podanej sytuacji nie widzę sensu umieszczani pola POLE tym bardziej że przy każdym dodaniu nowego przeszukuje całą tabele i to samo przy edycji a jak byś miał jedną dodatkową tabelę z jednym polem to tyko odczyt jednego jedynego rekordu czy modyfikacja to nie koszt. Ale już nie będę się kłócił, bo równie dobrze się mogę mylić, ale chyba w Oracle by nie blokowali czegoś co jest użyteczne... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 16:34 |