2017-07-06 4 views
0

Ich habe 2 Tabellen, eine übergeordnete Tabelle und eine untergeordnete Tabelle. Untergeordnete Tabelle hat einen Fremdschlüssel zur übergeordneten Tabelle. Ich habe erfolgreich den Fremdschlüssel erstellt. Aber wie automatisch Feld 'Nama' basierend auf Elterntabelle aktualisieren, während ich nur 'id_parent' einfügen? ich nur versucht:MYSQL So aktualisieren Sie den Wert der untergeordneten Tabelle mit Fremdschlüssel, während Sie Daten basierend auf der übergeordneten Tabelle einfügen

INSERT INTO child (id_parent) values (1) 

aber Feld 'Name' Wert ist immer noch NULL

Hier meine Tabellen:

CREATE TABLE `child` (
    `id` int(6) NOT NULL AUTO_INCREMENT, 
    `id_parent` int(6) DEFAULT NULL, 
    `nama` varchar(20) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `aa` (`nama`,`id_parent`), 
    CONSTRAINT `aa` FOREIGN KEY (`nama`, `id_parent`) REFERENCES `parent` (`nama`, `id`) 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=armscii8; 

-- ---------------------------- 
-- Table structure for parent 
-- ---------------------------- 
CREATE TABLE `parent` (
    `id` int(5) NOT NULL AUTO_INCREMENT, 
    `nama` varchar(20) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `nama` (`nama`) 
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8; 

die übergeordnete Tabelle

INSERT INTO `parent` VALUES ('4', 'asa'); 
INSERT INTO `parent` VALUES ('1', 'batman'); 
INSERT INTO `parent` VALUES ('3', 'goku'); 
INSERT INTO `parent` VALUES ('2', 'robin'); 
INSERT INTO `parent` VALUES ('5', 'usu'); 

Antwort

1

diese Daten wie hat Überprüfen Sie diese Zeile:

KEY `aa` (`nama`,`id_parent`), 
    CONSTRAINT `aa` FOREIGN KEY (`nama`, `id_parent`) REFERENCES `parent` (`nama`, `id`) 

Hier haben Sie eine foreign key-Beziehung auf zwei Spalten erstellt, d. H. parent (nama, id). In diesem Fall können Sie nur die Werte in die untergeordnete Tabelle einfügen, die sich bereits in der übergeordneten Tabelle befinden. Denken Sie daran, hier wird der Fremdschlüssel implementiert, indem zwei Spalten kombiniert werden und nicht eine einzelne Spalte.

+0

Ich bin immer noch nicht ganz sicher über Fremdschlüssel. Wie kann ich ein anderes Feld in derselben Tabelle automatisch aktualisieren, indem ich nur ein Feld auf Basis einer anderen Tabelle einfüge? –

+0

Überprüfen Sie dies: http://www.mysqltutorial.org/mysql-foreign-key/ und wenn Sie noch ein Problem haben, werde ich es Ihnen erklären. –

Verwandte Themen