Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

DELETE statement conflicted with COLUMN REFERENCE constraint

Îåêßíçóå áðü ôï ìÝëïò pap. Τελευταία δημοσίευση από το μέλος pap στις 26-10-2008, 23:03. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-10-2008, 01:29 45753

    DELETE statement conflicted with COLUMN REFERENCE constraint

    Έχω 2 πίνακες Α και Β. Το id του Α είναι foreign key στον Β. Μέσα από την εφαρμογή διαγράφω το id του A και μου βγάζει το μήνυμα:

    "DELETE statement conflicted with COLUMN REFERENCE constraint 'Pelatis_fk'. The conflict occurred in database 'dbmngr', table 'Pelatis', column 'paragelliaId'."

    Καταλαβαίνω ότι δεν είναι δυνατόν να διαγραφεί κατά αυτό τον τρόπο. Έχετε να μου προτείνεται εναλλακτική;
  •  26-10-2008, 08:43 45754 σε απάντηση της 45753

    Απ: DELETE statement conflicted with COLUMN REFERENCE constraint

    Σβήσε πρώτα από τον B τις εγγραφές που συνδέονται με τον Α και ξαναδοκίμασε. Εναλλακτικά, τροποποίησε το constraint έτσι ώσε να γίνεται cascade delete. Έτσι όταν σβήνεις κάτι στον A θα σβήνει και τις σχετικές εγγραφές στον B.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  26-10-2008, 11:54 45758 σε απάντηση της 45754

    Απ: DELETE statement conflicted with COLUMN REFERENCE constraint

    Ευχαριστώ για την απάντησή σου Παναγιώτη.
    Το πρόβλημα είναι ότι δεν θέλω να διαγραφούν οι εγγραφές του Β.
  •  26-10-2008, 12:31 45760 σε απάντηση της 45758

    Απ: DELETE statement conflicted with COLUMN REFERENCE constraint

    Αυτό θα είναι εφικτό μόνο όταν δεν υπάρχει η σχέση μεταξύ των δύο πινάκων.

    Συνήθως οι τεχνικές που χρησιμοποιούμε σε μια τέτοια περίπτωση είναι:

    • Να έχουμε σχέσεις, και να μην σβήνουμε τίποτα - να χρησιμοποιούμε πεδία στον που θα μαρκάρουν μια εγγραφή σβησμένη και να μην την χρησιμοποιούμε ότι θα είναι μαρκαρισμένη σαν σβησμένη
    • Να μην έχουμε σχέσεις στην βάση δεδομένων - το bussiness layer να είναι υπεύθυνο στο να κάνει enforce τις σχέσεις των δεδομένων, κατά το validate των δεδομένων, πριν τα γράψει στην βάση.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  26-10-2008, 13:03 45765 σε απάντηση της 45760

    Απ: DELETE statement conflicted with COLUMN REFERENCE constraint

    George J. Capnias:
    Να έχουμε σχέσεις, και να μην σβήνουμε τίποτα - να χρησιμοποιούμε πεδία στον που θα μαρκάρουν μια εγγραφή σβησμένη και να μην την χρησιμοποιούμε ότι θα είναι μαρκαρισμένη σαν σβησμένη.


    Αυτό το κατάλαβα. Ως προς αυτή την περίπτωση, δημιουργούνται προβλήματα;

    George J. Capnias:
    Να μην έχουμε σχέσεις στην βάση δεδομένων - το bussiness layer να είναι υπεύθυνο στο να κάνει enforce τις σχέσεις των δεδομένων, κατά το validate των δεδομένων, πριν τα γράψει στην βάση.


    Αυτό πως γίνεται; Μπορείς να δώσεις λίγο κώδικα αν δε σου κάνει κόπο;

     

  •  26-10-2008, 23:03 45780 σε απάντηση της 45765

    Απ: DELETE statement conflicted with COLUMN REFERENCE constraint

    Το πρόβλημα λύθηκε βάζοντας Null στον πίνακα που διατηρεί το foreign key, πριν να γίνει διαγραφή του id του referenced πίνακα.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems