Hej,
Chcialem utworzyc relacje pomiedzy tabelami. Utworzylem tabele za pomoca polecen:
<?php
CREATE TABLE tabela_a (
kolumna_a VARCHAR
(20
) PRIMARY
KEY, kolumna_b VARCHAR(10) UNIQUE NOT NULL,
kolumna_c VARCHAR(8) DEFAULT NULL,
kolumna_d FLOAT(10,2) DEFAULT NULL,
kolumna_e FLOAT(10,2) DEFAULT NULL,
kolumna_f FLOAT(10,2) DEFAULT NULL,
kolumna_g FLOAT(10,2) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE tabela_b (
kolumna_a VARCHAR
(20
) PRIMARY
KEY, kolumna_b VARCHAR(20) REFERENCES tabela_a(kolumna_a)
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
?>
<?php
mysql> insert into sms_indexes_content values('ala ma kota', 'sialala');
Query OK, 1 row affected (0.04 sec)
mysql>
?>
I jak chce wpisac do tabela_b.kolumna_b wartosc ktorej nie ma w tabela_a.kolumna_a to MySQL zezwala na to. Gdzie robie blad?
------------------------------------------------[ ODPOWIEDZ ]------------------------------------------------
Dla osob, ktore maja ten sam problem, zapytania powinny wygladac nastepujaco:
<?php
CREATE TABLE tablea_a (
kolumna_a VARCHAR
(20
) PRIMARY
KEY, kolumna_b VARCHAR(10) UNIQUE NOT NULL,
kolumna_c VARCHAR(8) DEFAULT NULL,
kolumna_d FLOAT(10,2) DEFAULT NULL,
kolumna_e FLOAT(10,2) DEFAULT NULL,
kolumna_f FLOAT(10,2) DEFAULT NULL,
kolumna_g FLOAT(10,2) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE tabela_b (
kolumna_a VARCHAR
(20
) PRIMARY
KEY, kolumna_b VARCHAR(20) NOT NULL,
FOREIGN
KEY (kolumna_b
) REFERENCES tabela_a
(kolumna_a
) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
?>
GOOD LUCK!
Ten post edytował MiChaSSs 31.07.2009, 09:09:32