Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] insert przy zachowaniu reguł integralności
chomik
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 18.12.2008

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


Jeśli mam tabele:




ksiazki:

id_ksiazki

tytul




ksiazki_autorzy:

id_ksiazki

id_autorzy




autorzy:

id_autorzy

nazwisko




Jeśli tabela 'ksiazki' jest połączona z tabelą 'ksiazki_autorzy' relacją jeden do wielu i tabela 'autorzy' jest połączona z tabelą 'książki_autorzy' relacją jeden do wielu to w jaki sposób mam skonstruować zapytanie SQL żeby zostały dodane wiersze do tych trzech tabel nie naruszając reguł integralności i tak żeby to zapytanie można było wykonać zarówno w bazie Oracle jak i MySQL.

Ten post edytował chomik 18.12.2008, 17:50:14
Go to the top of the page
+Quote Post
chyzio
post
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 12.03.2006

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


Nie rozumiem problemu. Dodajesz autora, dodajesz książkę i dopiero możesz powiązać rekordy w tablicy ksiazki_autorzy wykorzystując ich id

Ten post edytował chyzio 13.01.2009, 12:26:15
Go to the top of the page
+Quote Post
prond
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Aby wymusic zachowanie więzów integralności powinieneś:
1) Ustawić dla tych tabel ENGINE=InnoDB
2) Dodać ograniczenia nastepujacej postaci:
  1. ALTER TABLE ksiazki_autorzy ADD CONSTRAINT ksiazka FOREIGN KEY ( id_ksiazki ) REFERENCES ksiazki(id_ksiazki) ON DELETE CASCADE;
  2. ALTER TABLE ksiazki_autorzy ADD CONSTRAINT autor FOREIGN KEY ( id_autorzy ) REFERENCES autorzy(id_autorzy) ON DELETE CASCADE;


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
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: 21.08.2025 - 15:49