Αδυναμία εισαγωγή σε πολλαπλούς πίνακες

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
logintech
Δημοσιεύσεις: 10
Εγγραφή: 05 Νοέμ 2012 14:29

Αδυναμία εισαγωγή σε πολλαπλούς πίνακες

Δημοσίευση από logintech » 27 Απρ 2013 16:27

Γεια σας παιδιά!

Μπαίνω κατευθείαν στο θέμα. Έχω μια φόρμα στην οποία εισάγω κάποια δεδομένα και στο function που τρέχει μετά έχω 4 διαφορετικά INSERT.
Το πρόβλημα είναι ότι το πρώτο INSERT τρέχει κανονικά. Στο δεύτερο κολλάει επειδή εκεί έχω ξένο κλειδί από τον πρώτο.

Ο κώδικας είναι ο εξής:

Κώδικας: Επιλογή όλων

mysql_query("INSERT INTO workstations (pcID, BOX_NAME, SERIAL, CPU_NAME, CPU_CORES, CPU_SPEED, USB_NUM) VALUES ('$pc_code', '$box_name', '$serial', '$cpu_name', '$cpu_cores', '$cpu_speed', '$usb_num')") or die(mysql_error());
	
mysql_query("INSERT INTO warranty (warranty_fk_IDs, WARRANTY, WARRANTY_NUM) VALUES ('$pc_code', '$warranty', '$warranty_num')") or die(mysql_error());

mysql_query("INSERT INTO statusnstock (status_fk_IDs, STATUS) VALUES ('$pc_code','$status')") or die(mysql_error());
	
mysql_query("INSERT INTO purchases (purchases_fk_IDs, PURCHASE_FROM, PURCHASE_PRICE, PURCHASE_DATE) VALUES ('$pc_code', '$purchase_from', '$price', '$purchase_date')") or die(mysql_error());
Προς στιγμήν αγνοείστε το 3ο και 4ο INSERT. Στον πρώτο πίνακα κάτω INSERT τα δεδομένα μου. Στον δεύτερο πίνακα παίρνω το κλειδί από τον πρώτο πίνακα (pcID) και θέλω να το χρησιμοποιήσω στον δεύτερο πίνακα για να εισάγω κάποια επιλεγμένα δεδομένα από την φόρμα.

Το μήνυμα σφάλματος που μου βγάζει είναι αυτό:

Κώδικας: Επιλογή όλων

Cannot add or update a child row: a foreign key constraint fails (`plirorganizer`.`warranty`, CONSTRAINT `warranty_fk_IDs_rams` FOREIGN KEY (`warranty_fk_IDs`) REFERENCES `rams` (`ramID`))
Τώρα θα μου πείτε που κολλάει η RAM. Κολλάει στο ότι το «warranty_fk_IDs» είναι μια στήλη στην οποία έχω συνδέσει πολλά πρωτεύοντα κλειδιά από άλλους πίνακες. Δείτε την εικόνα.
Το θέμα είναι πως πάντα θα κολλάει στην πρώτο καταχωρημένο κλειδί. Αν πχ ήταν το «drID» θα χτυπούσε σε αυτό.

Υστερικόγραφο: Αυτό το μήνυμα μου το έβγαζε πιο παλιά επειδή έλειπε η καταχώριση από τον βασικό πίνακα και χτυπούσε η σύνδεση των πινάκων. Τώρα όμως;
Συνημμένα
foreign keys.png

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες