Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας!

 

Πως γίνεται στη Mysql να διαγράψω μια εγγραφή η οποία έχει ως πεδίο το id ενός άλλου πίνακα (foreign key) χωρίς να σβηστεί και η εγγραφή από τον άλλο πίνακα;

 

Με λίγα λόγια μου διαγράφει και τις δύο εγγραφές....

 

Για την ακρίβεια έχω κάνει μάλλον βλακεία για δείτε λίγο τη σχέση...

74748459.png

Δημοσ. (επεξεργασμένο)

2 προβλήματα

 

1) δεν αναφέρεις από ποιον πίνακα προσπαθείς να διαγράψεις

2) δεν παραθέτεις εντολή διαγραφής.

 

Σε περίπτωση που διαγράφεις από τον user_data τότε έχεις ορίσει το foreign key με propagate ιδιότητα. Στην αντίθετη περίπτωση (η οποία και φαίνεται πιο πιθανή από την περιγραφή σου) ψάξε τους trigger σου γιατί δεν υπάρχει περίπτωση να το κάνει αυτόματα ο server.

 

Edit.

 

Βασικά έλεγξε όλα τα foreign keys και κυρίως αυτά που χρησιμοποιούν σαν primary τον πίνακα address να μην έχουν propagate ιδιότητες

Επεξ/σία από taazz
Δημοσ.

Όταν δημιουργείς το 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.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...