παπι Δημοσ. 23 Ιουνίου 2017 Δημοσ. 23 Ιουνίου 2017 Μπορουμε να φτιαξουμε table στην mysql το οποιο θα παιρνει μεχρι N rows; Και οταν φτασει τα Ν rows, να διαγραφει το πρωτο και να βαζει το καινουριο στο τελος (ή το αναποδο)
Predatorkill Δημοσ. 23 Ιουνίου 2017 Δημοσ. 23 Ιουνίου 2017 There you go: https://stackoverflow.com/questions/17881106/limit-table-to-100-rows-after-that-delete-the-last-and-add-new-one-to-the-top 1
White_Cat Δημοσ. 26 Ιουνίου 2017 Δημοσ. 26 Ιουνίου 2017 Καλημέρα !Αυτή η δυνατότητα υπάρχει εγγενώς στις σχετικά νέες εκδόσεις της MySQL. Δηλαδή η ίδια η βάση δεδομένων σου δίνει τη δυνατότητα να εισάγεις μέχρι N εγγραφές. Αυτό όμως δεν πάει να πει ότι άμα φτάσεις τις Ν εγγραφές θα σου απαγορεύσει νέες εισαγωγές. Απλά ό,τι εισάγεται μετά την υπέρβαση αυτού του ορίου, σβήνεται.Θα φτιάξουμε ένα πίνακα που κάθε εγγραφή απλά θα είναι ένας ακέραιος και θα έχει το πολύ εκατό ας πούμε εγγραφές :CREATE TABLE `pinakaki` `id` int(5) DEFAULT NULL) ENGINE=InnoDB MAX_ROWS=100Να είστε καλά,Ο Άσπρος Γάτος
DeltaLover Δημοσ. 26 Ιουνίου 2017 Δημοσ. 26 Ιουνίου 2017 Μπορουμε να φτιαξουμε table στην mysql το οποιο θα παιρνει μεχρι N rows; Και οταν φτασει τα Ν rows, να διαγραφει το πρωτο και να βαζει το καινουριο στο τελος (ή το αναποδο) Πρόσθεσε τον table το field row_index: CREATE TABLE your_table ( some_field char(12), row_index int(10) unsigned not null ); Κάνε initalize το your_table inserting τις rows που χρειάζεσαι ( 4 στο παράδειγμα): INSERT INTO your_table (row_index) VALUES(1),(2),(3),(4); Για να προσθέσεις row αντί γιά insert κάνεις πάντα update όπως εδώ: UPDATE your_table SET some_field='abc1', row_index=row_index+4 ORDER BY row_index LIMIT 1; Δες το αποτέλεσμα: UPDATE your_table SET some_field='abc2', row_index=row_index+4 ORDER BY row_index LIMIT 1; UPDATE your_table SET some_field='abc3', row_index=row_index+4 ORDER BY row_index LIMIT 1; UPDATE your_table SET some_field='abc4', row_index=row_index+4 ORDER BY row_index LIMIT 1; UPDATE your_table SET some_field='abc5', row_index=row_index+4 ORDER BY row_index LIMIT 1; select * from your_table; Output: mysql> select * from your_table; +------------+-----------+ | some_field | row_index | +------------+-----------+ | abc5 | 9 | | abc2 | 6 | | abc3 | 7 | | abc4 | 8 | +------------+-----------+ 4 rows in set (0.00 sec)
alou Δημοσ. 26 Ιουνίου 2017 Δημοσ. 26 Ιουνίου 2017 Παίζει να κάνεις και ένα trigger που θα σβήνει το πρώτο row πριν οποιοδήποτε insert αν count rows > X CREATE TRIGGER keep100rows BEFORE INSERT ON myTable FOR EACH ROW BEGIN IF (SELECT COUNT(*) FROM myTable) = 100 THEN DELETE FROM myTable ORDER BY id LIMIT 1; END IF; END; Το ordering θεωρώ ότι το κάνεις με στήλη id αλλά whatever. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα