Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] insert przy zachowaniu reguł integralności
Forum PHP.pl > Forum > Bazy danych
chomik
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.
chyzio
Nie rozumiem problemu. Dodajesz autora, dodajesz książkę i dopiero możesz powiązać rekordy w tablicy ksiazki_autorzy wykorzystując ich id
prond
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;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.