Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ominiencie triggera
AcidBurnt
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


witam

jak ominac triggera nalozonego na insert na danej tabeli

trigger generuje unikalne id dla usera, tylko teraz sprawa wyg;lada tak ze przy kopi tabeli i ponownym wrzucenia danych generuje on te ID od nowa a bardzo wskazane by było aby pozostało stare.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Mozesz zrobic tak ze jak dodajesz id usera to trigger nie wpisuje do pola. Jeden prosty warunek w funkcji triggera. Wtedy podczas kopiowania tabeli trigger bedzie wywolywany ale nie bedzie modyfikowal danych.
Go to the top of the page
+Quote Post
AcidBurnt
post
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Cytat(SongoQ @ 2005-12-12 03:59:50)
Mozesz zrobic tak ze jak dodajesz id usera to trigger nie wpisuje do pola. Jeden prosty warunek w funkcji triggera. Wtedy podczas kopiowania tabeli trigger bedzie wywolywany ale nie bedzie modyfikowal danych.

a jaki prosty? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. IF NEW.id IS NULL THEN
  2. NEW.id := NEXTVAL('sekwencja');
  3. END IF;
Go to the top of the page
+Quote Post
AcidBurnt
post
Post #5





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


  1. DECLARE
  2. inumer int4;
  3. iseria int4;
  4. BEGIN IF NEW.user_number IS NULL THEN
  5. inumer := NEXTVAL('numer');
  6. IF inumer = 10 THEN
  7. inumer := NEXTVAL('numer');
  8. iseria := NEXTVAL('seria');
  9. NEW.user_number := inumer;
  10. NEW.user_seria := iseria;
  11. ELSE
  12. NEW.user_number := inumer;
  13. SELECT last_value
  14. FROM seria INTO NEW.user_seria; END IF;
  15. END IF;
  16. RETURN NEW;
  17. END;


dalem cos takiego i nie za bardzo... wogle sie nie wyzwala trigger, jak wpisuje jakies user_number to sie dodaje takie jak chce, ale jak nie wposuje zadnego to sie nie wyzwala trigger.

Ten post edytował AcidBurnt 12.12.2005, 20:56:54
Go to the top of the page
+Quote Post
Jabol
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


  1. DROP TRIGGER blablabla; ... CREATE TRIGGER blablabla...;
Go to the top of the page
+Quote Post
AcidBurnt
post
Post #7





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Cytat(Jabol @ 2005-12-12 22:42:34)
  1. DROP TRIGGER blablabla; ... CREATE TRIGGER blablabla...;

nie wiem czy to jest dobry pomysł za kazdym razem usuwanie i dodawanie triggera.

pozatym tak dziala:

  1. DECLARE
  2. inumer int4;
  3. iseria int4;
  4. BEGIN IF NEW.user_number IS NULL THEN
  5. inumer := NEXTVAL('numer');
  6. IF inumer = 10 THEN
  7. inumer := NEXTVAL('numer');
  8. iseria := NEXTVAL('seria');
  9. NEW.user_number := inumer;
  10. NEW.user_seria := iseria;
  11. ELSE
  12. NEW.user_number := inumer;
  13. SELECT last_value
  14. FROM seria INTO NEW.user_seria; END IF;
  15. END IF;
  16. RETURN NEW;
  17. END;


Ten post edytował AcidBurnt 12.12.2005, 22:55:26
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Mozesz np zrobic CREATE OR REPLACE
Go to the top of the page
+Quote Post

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: 23.08.2025 - 06:50