Potrzebuję usunąć wszystkie wiersze z tabeli, ale kiedy dodaję nowy wiersz, chcę, aby identyfikator klucza podstawowego, który ma automatyczny przyrost, zaczął ponownie od 0 odpowiednio od 1.MySQL Usuń wszystkie wiersze z tabeli i zresetuj identyfikator do zera
Odpowiedz
nie należy usuwać, używać skróconego:
Truncate table XXX
tabela obsługi nie pamięta ostatnio używany wartość AUTO_INCREMENT, ale rozpoczyna odliczanie od początku. Dotyczy to również MyISAM i InnoDB, które zwykle nie wykorzystują ponownie wartości sekwencji.
Jeśli nie można używać TRUNCATE
(np z powodu ograniczeń kluczy obcych) można użyć alter table po usunięciu wszystkich wierszy, aby ponownie uruchomić AUTO_INCREMENT:
ALTER TABLE mytable AUTO_INCREMENT = 1
To nie działa dla mnie. Jaki mógł być powód? –
@NBhargav Ponieważ możesz używać silnika InnoDB na stole zamiast MyISAM, pierwszy nie obsługuje resetowania indeksu. –
jak usunąć wszystkie wiersze przed zmianą wartości auto_increment –
Interesującym faktem.
byłem pewien TRUNCATE
zawsze będzie lepiej, ale w moim przypadku, na bazie danych z około 30 tabel z kluczy obcych, zaludnionych tylko kilka wierszy, zajęło to około 12 sekund TRUNCATE
wszystkich tabel, w przeciwieństwie do tylko kilkaset milisekund do DELETE
wierszy. Ustawienie automatycznego przyrostu dodaje około sekundy, ale wciąż jest o wiele lepiej.
Proponuję więc spróbować obu, zobacz, który działa szybciej w twoim przypadku.
Jeśli tabela ma kluczy obcych następnie Zawsze używam następujący kod:
SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check
SET AUTOCOMMIT = 0; -- disable autocommit
START TRANSACTION; -- begin transaction
/*
DELETE FROM table_name;
ALTER TABLE table_name AUTO_INCREMENT = 1;
-- or
TRUNCATE table_name;
-- or
DROP TABLE table_name;
CREATE TABLE table_name (...);
*/
SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check
COMMIT; -- make a commit
SET AUTOCOMMIT = 1 ;
Ale różnica będzie w czasie wykonywania. Spójrz na odpowiedź Sorina.
Jest to dobry sposób na to, aby mieć osierocone dane w dowolnej tabeli, które obce klucze do tabeli, którą wymazujesz. Włączenie sprawdzania klucza obcego po fakcie nie powoduje, że MySQL ponownie potwierdza te klucze obce, o ile wiem. Pozostawia to wiersze zawierające dane, które * nie istnieje * w tabeli odniesienia. Równie dobrze możesz nie mieć * kluczy obcych na swoim stole. – cimmanon
- 1. Usuń wszystkie wiersze tabeli z tabeli bazy danych SQLite
- 2. Usuń zera kolumnę i wiersze z macierzy matlab
- 3. Datownik MySQL - dlaczego wszystkie zera?
- 4. usuń wszystkie wpisy z tabeli z php
- 5. Mysql zaktualizować wszystkie wiersze na podstawie wybierz z innej tabeli
- 6. Mysql pobrać wszystkie wiersze z limitem
- 7. Pobierz wiersze z tabeli mysql do tablic php
- 8. Usunąć wszystkie wiersze z tabeli, rzuca nullpointer
- 9. mySQL zwraca wszystkie wiersze, gdy pole = 0
- 10. Usuń wszystkie inne wiersze w notatniku ++
- 11. SQL Usuń wiersze na podstawie innej tabeli
- 12. Usuń wszystkie zduplikowane wiersze Excel vba
- 13. Excel VBA - Usuń puste wiersze w tabeli
- 14. Usuń wszystkie wiersze z tabeli z wyjątkiem jednego z <th> tagów
- 15. Usuń wszystkie rekordy w tabeli MYSQL w phpMyAdmin
- 16. MySQL usuń wszystkie spacje z całej kolumny
- 17. MySQL: Jak wybrać i wyświetlić WSZYSTKIE wiersze z jednej tabeli i obliczyć sumę klauzuli where w innej tabeli?
- 18. PHP MySQL Wybierz identyfikator z jednej tabeli i informacje z innej tabeli
- 19. MySQL USUŃ wszystkie oprócz najnowszych rekordów X
- 20. Usuń wiele wierszy z tabeli przy użyciu identyfikatora w MySQL
- 21. MySQL upuszczając wszystkie indeksy z tabeli
- 22. Jak przenieść wiersze tabeli mysql na kolumny
- 23. Django: Usuń wszystkie dane z każdej tabeli (ale same tabele)
- 24. Szyny: numer do waluty, usuń końcowe zera
- 25. LEFT JOIN nie wraca wszystkie wiersze
- 26. MySQL skutecznie skopiować wszystkie rekordy z jednej tabeli do drugiej
- 27. Usuń wszystkie zer z tablicy
- 28. Jak uzyskać wszystkie wiersze z określonej tabeli przy użyciu BeautifulSoup?
- 29. MySql, podziel łańcuch i wstaw do tabeli
- 30. Usuń duplikat z tabeli
Funkcja przycinania działa dobrze w przypadku nieskrępowanych tabel, ale jeśli tabela zawiera ograniczenie klucza obcego, można rozważyć użycie metody usuwania. Zobacz ten post, jeśli masz ograniczenia FK: [skracaj tabelę z ograniczonym kluczem obcym] (http://stackoverflow.com/questions/5452760/truncate-foreign-key-constrained-table) –
pamiętaj, że skrócona tabela nie będzie wycofywać –