Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ON DELETE CASCADE
chiken
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 31.07.2006
Skąd: Czeladź

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


Witam
szukam informacji na temat ON DELETE CASCADE, i nie moge znalesc :/

potrzebuje usunac rekord z tabeli A , oraz wszystkie inne rekordy powiazane z nim w innych tabelach, znajduje tylko cascadowe usuwanie tabel , ale nie o to mi chodzi


--------------------
Projektowanie stron internetowych
Go to the top of the page
+Quote Post
sf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


http://www.postgresql.org/docs/8.1/interac...-CONSTRAINTS-FK


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Adiasz
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 28.02.2004

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


rozwiazanie 1:
do wszystkich tabeli, z ktorych chcesz aby automatycznie byly kasowane rekordy dodajesz klucz obcy
  1. ALTER TABLE table_XXX ADD CONSTRAINT nazwa FOREIGN KEY (nazwa_pola_w_XXX) REFERENCES tabela_A(nazwa_pola_w_A) MATCH FULL ON UPDATE CASCADE DELEFE CASCADE;

i kasowanie bedzie nastepowalo automatycznie (postgres sie tym zajmie)
(zwroc uwage ze aby to zadzialalo pole nazwa_pola_w_A musi byc UNIQUE aby to ustawic jezeli nie jest nalezy:
  1. ALTER TABLE tabela_A ADD constraint testowy1 UNIQUE(nazwa_pola_w_A)
)

rozwiazanie 2:
jezeli z jakichs powodow nie mozna ustawic kluczy pozostaje napisac funkcje kasujaca samemu i ustawic triggera
* piszemy funkcje, ktora sprawdzi czy w zbiorze tabel {x1..xn} wystepuje wartosc OLD.nazwa_elementu_laczacego i jezeli tak to wykonywany jest DELETE z warunkiem na te element
* tworzymy triggera
  1. CREATE TRIGGER tr_delete_cascade
  2. AFTER DELETE ON tabela_A
  3. FOR EACH ROW EXECUTE PROCEDURE delete_cascade();
Go to the top of the page
+Quote Post
chiken
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 31.07.2006
Skąd: Czeladź

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


hej
dzieki za odpowiedzi,
myslalem ze jakos sie wywoluje on delete cascade, nie sadzilem ze w tabeli sie umieszcza to.

Kiedy sie zorientowalem wszystko poszlo tak jak trzeba, znajomego sie pytalem i mnie zmylil poprostu i jak czytalem to sie pogubilem,

dzieki za pomoc


--------------------
Projektowanie stron internetowych
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 06:56