Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klucz obcy bez wartości
Forum PHP.pl > Forum > Bazy danych > MySQL
janek
Witam,

Mam dwie tabele, A i B. Tabela A ma kolumnę id, a tabela B ma kolumnę klucz_id, która jest kluczem obcym łączącym ją z tabelą A (czyli B.klucz_id to klucz obcy dla A.id).

Czy da się tak stworzyć te tabele, żeby do tabeli B można było wstawić nowy rekord, który nie będzie zawierał wartości w kolumnie klucz_id (lub będzie null), lub wartość w tej kolumnie nie będzie występować w A.id?

dzięki z góry za pomoc!
basurman
z tego co mi wiadomo o SQL-u to klucz obcy stosuje się właśnie po to
aby uniemożliwić wszystkie wymienione przez Ciebie działania.
Z drugiej strony rozumie Twój problem i ja w tabelach stosuje
poniższy 'wybieg':
w tabeli potomnej B kolumnie ograniczonej kluczem obcym (klucz_id) ustawiam
wartość domyślną (przy liczbach wypada dać coś <1), która będzie wrzuczna do
wszystkich rekordów, w których to pole jest nie wypełnione;
w tabeli A wpisuje rekord o id równym wspomnianej wartości domyślnej


  1. CREATE TABLE A
  2. (id int PRIMARY KEY, nazwa varchar(15), ...)
  3. TYPE=INNODB;
  4.  
  5. CREATE TABLE B
  6. (klucz_id int <span style="font-weight: bold;">DEFAULT '0' FOREIGN KEY REFERENCES A(id), ...)
  7. TYPE=INNODB;
  8.  
  9. INSERT
  10. INTO A SET <span style="font-weight: bold;">id='0', nazwa='brak danych';
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.