find max

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

find max

Δημοσίευση από Kypros Lambrou » 26 Οκτ 2011 15:19

Ο αριθμός του επόμενου auto_increment είναι αποθηκευμένος σε μια μεταβλητή ας το πούμε και αυξάνεται κατα 1 κάθε φορά που προσθέτεις ένα row όπως είπες και εσύ. Δεν βλέπει ποιος είναι ο μεγαλύτερος αριθμός μεταξύ των καταχωρήσεων και προσθέτει ακόμη 1.

Υπάρχει τρόπος να αλλάξεις τον αριθμό του auto_increment αλλά δεν είναι και ότι καλύτερο για να κάνεις αφού θα πρέπει να είσαι σίγουρος ότι δεν θα σου φέρει πρόβλημα στις σχέσεις μεταξύ των tables ή άλλες μη αναμενόμενες συμπεριφορές. Μπορείς να το αλλάξεις αν είναι ανάγκη με:

Κώδικας: Επιλογή όλων

ALTER TABLE table AUTO_INCREMENT = 5
αλλά αν δεν υπάρχει ιδιαίτερος λόγος να κρατάς μια σειρά χωρίς κενά, θα σου πρότεινα να μην το αλλάζεις.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

find max

Δημοσίευση από cherouvim » 26 Οκτ 2011 19:58

wdesignergr έγραψε:[...] Συνεχίζοντας να εισάγουμε rows, η μεταβλητή συνεχίζει να αυξάνεται, παρακάμπτοντας ότι λείπει μια μεταβλητή που προηγουμένος διαγράψαμε.
Υπάρχει τρόπος να συμπληρώσουμε το κενό?
Δεν θέλεις να συμπληρώσεις το κενό γιατί μπορεί να προκύψει πρόβλημα. Το id που σβήστηκε δεν πρέπει να χρησιμοποιηθεί από νέο row.

Οπότε φρόντισε ο τύπος του πεδίου να χωράει αρκετά μεγάλο νούμερο αναλόγως του τι θέλεις να αποθηκεύσεις στο table. Αν δεν σε ενδιαφέρει αυτή η λεπτομέρεια (το τι θα αποθηκεύσεις μέσα) απλά βάζε τύπο serial και κατά 99.999% θα είσαι ΟΚ για πάντα σε όλες σου τις εφαρμογές.

* serial στη MySQL είναι ένα alias τούμπανο που σημαίνει: BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης