Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL и заключете таблица, прочетете и след това съкратете

Не можете да съкратите таблица, която е заключена за писане. Това е така, защото "truncate" означава "унищожи таблицата и пресъздай нова със същата схема."

Можете обаче да изпразните масата. Вместо TRUNCATE TABLE asin_one_time_only използвайте DELETE FROM asin_one_time_only . Имайте предвид, че това няма да нулира номерацията с автоматично увеличение. Ако искате да го нулирате също, използвайте ALTER TABLE asin_one_time_only auto_increment=1

Предлагам да направите това:

LOCK TABLES asin_one_time_only READ;
SELECT asin FROM asin_one_time_only;
-- minimize the possibility of someone writing to the table in-between
-- an "UNLOCK TABLES" and a "LOCK TABLES" by just issuing a new LOCK TABLES
-- I am not 100% sure that MySQL will do this atomically, so there is a
-- possibility that you may delete a row that was not read.
-- If this is unacceptable, then use a "LOCK TABLES asin_one_time_only WRITE"
-- from the very beginning.
LOCK TABLES asin_one_time_only WRITE;
DELETE FROM asin_one_time_only;
ALTER TABLE asin_one_time_only auto_increment=1;
UNLOCK TABLES;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. грешка във вашия SQL синтаксис .. близо до 'ключ'

  2. Вмъкване на няколко реда с една заявка MySQL

  3. Трябва ли да създам нова таблица в моята база данни за това?

  4. Отрязване на резултатите от груповите конкат

  5. как да отворя множество модел/база данни в работната маса на mysql