Περισσότερα
Πώς να 'εισαγάγετε εάν δεν υπάρχει' στη MySQL;
Ξεκίνησα ψάχνοντας στο google και βρήκα αυτό το άρθρο που μιλάει για τους πίνακες mutex.
Έχω έναν πίνακα με ~14 εκατομμύρια εγγραφές. Αν θέλω να προσθέσω περισσότερα δεδομένα στην ίδια μορφή, υπάρχει τρόπος να διασφαλίσω ότι η εγγραφή που θέλω να εισαγάγω δεν υπάρχει ήδη χωρίς να χρησιμοποιήσω ένα ζεύγος ερωτημάτων (δηλαδή, ένα ερώτημα για να ελέγξω και ένα για να εισαγάγω είναι το σύνολο αποτελεσμάτων κενό);
Ένας περιορισμός "μοναδικό" σε ένα πεδίο εγγυάται ότι η εισαγωγή θα αποτύχει αν υπάρχει ήδη;
Φαίνεται ότι με μόνο έναν περιορισμό, όταν εκδίδω την εισαγωγή μέσω php, το σενάριο καταρρέει.
778
3
χρησιμοποιήστε
INSERT IGNORE INTO table
βλέπε
on duplicate key update, ή insert ignore μπορεί να είναι βιώσιμες λύσεις με τη MySQL.
Παράδειγμα ενημέρωσης on duplicate key update με βάση το mysql.com
Παράδειγμα insert ignore με βάση το mysql.com
Ή:
Or:
Οποιοσδήποτε απλός περιορισμός θα πρέπει να κάνει τη δουλειά, αν μια εξαίρεση είναι αποδεκτή. Παραδείγματα :
Λυπάμαι που αυτό φαίνεται απατηλά απλό. Ξέρω ότι φαίνεται άσχημο σε σχέση με τον σύνδεσμο που μοιράζεστε μαζί μας. ;-(
Αλλά παρ' όλα αυτά δίνω αυτή την απάντηση, επειδή φαίνεται να καλύπτει την ανάγκη σας. (Αν όχι, μπορεί να προκαλέσει την επικαιροποίηση των απαιτήσεών σας, η οποία θα ήταν "ένα καλό πράγμα"(TM) επίσης).
Επεξεργασία: Εάν μια εισαγωγή θα έσπαγε τον μοναδικό περιορισμό της βάσης δεδομένων, θα δημιουργηθεί μια εξαίρεση σε επίπεδο βάσης δεδομένων, η οποία θα μεταδοθεί από τον οδηγό. Σίγουρα θα σταματήσει το σενάριό σας, με μια αποτυχία. Θα πρέπει να είναι δυνατόν στην PHP να αντιμετωπιστεί αυτή η περίπτωση ...