rafinos Δημοσ. 22 Δεκεμβρίου 2011 Δημοσ. 22 Δεκεμβρίου 2011 Γεια σας! Πως γίνεται στη Mysql να διαγράψω μια εγγραφή η οποία έχει ως πεδίο το id ενός άλλου πίνακα (foreign key) χωρίς να σβηστεί και η εγγραφή από τον άλλο πίνακα; Με λίγα λόγια μου διαγράφει και τις δύο εγγραφές.... Για την ακρίβεια έχω κάνει μάλλον βλακεία για δείτε λίγο τη σχέση...
taazz Δημοσ. 22 Δεκεμβρίου 2011 Δημοσ. 22 Δεκεμβρίου 2011 (επεξεργασμένο) 2 προβλήματα 1) δεν αναφέρεις από ποιον πίνακα προσπαθείς να διαγράψεις 2) δεν παραθέτεις εντολή διαγραφής. Σε περίπτωση που διαγράφεις από τον user_data τότε έχεις ορίσει το foreign key με propagate ιδιότητα. Στην αντίθετη περίπτωση (η οποία και φαίνεται πιο πιθανή από την περιγραφή σου) ψάξε τους trigger σου γιατί δεν υπάρχει περίπτωση να το κάνει αυτόματα ο server. Edit. Βασικά έλεγξε όλα τα foreign keys και κυρίως αυτά που χρησιμοποιούν σαν primary τον πίνακα address να μην έχουν propagate ιδιότητες Επεξ/σία 23 Δεκεμβρίου 2011 από taazz
MitsakosGR Δημοσ. 23 Δεκεμβρίου 2011 Δημοσ. 23 Δεκεμβρίου 2011 Όταν δημιουργείς το foreign key σου δίνει τη δυνατότητα να επιλέξεις τι να κάνει όταν διαγράφεις μία εγγραφή. Έτσι όπως το αναφέρεις μάλλον του έχεις πει να διαγράφει και τις εξαρτώμενες εγγραφές. Το FOREIGN KEY Constraints δέχεται αυτές τις παραμέτρους: > [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION Δοκίμασε στο ON DELETE να του κάνεις NO ACTION.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα