Δημοσιεύτηκε: 17 Δεκ 2010, 21:44
από Αποστόλης
Σε αυτή την περίπτωση το ποιό σωστό θα ήταν να ορίσεις σαν primary key τον συνδυασμό των δύο πεδίων που αναφέρεις: όνομα συνδυασμού+όνομα περιφέρειας.
Αυτό μόνο εάν και εφόσον δεν θέλεις να υπάρχει δεύτερη φορά ο ίδιος συνδυασμός στην ίδια περιφέρεια.
Ετσι όπως το έχεις τώρα θα σου χτυπήσει γιατί ο συνδυασμός υπάρχει και είναι unique. Δηλαδή μπορεί να υπάρξει μόνο μια φορά. Είτε σε αυτή την περιφέρεια είτε σε κάποια άλλη (οποιαδήποτε).

Μια κύρια διαφορά ανάμεσα στον έλεγχο που κάνει το primary key και σε κάποιον έλεγχο που κάνεις εσύ είναι οτι το primary key κάνει έλεγχο μόνο για το συγκεκριμένο πεδίο. Αν η τιμή που προσπαθείς να περάσεις υπάρχει η MSQL χτυπάει DUPLICATE ENTRY FOR PRIMARY KEY κ.λ.π. κ.λ.π.
Αν η τιμή δεν υπάρχει τότε και αυτή και οτιδήποτε άλλο θα περάσει.
Ο έλεγχος όμως που κάνεις εσύ μπορεί να πάρει άπειρους παραμέτρους.
SELECT όνομα συνδυασμού,όνομα περιφέρειας FROM συνδυασμός WHERE όνομα συνδυασμού = " όνομα συνδυασμού" AND όνομα περιφέρειας = "όνομα περιφέρειας";
Τα AND μπορούν αν είναι ατελείωτα, να συνδυαστούν με CONCAT, OR, BETWEEN, NOT LIKE και τρέχα γύρευε. Ορεξη να έχεις να γράφεις...

stored procedure μέσα από MySQL shell;
Τζάμπα κόπος μου ακούγεται.