sql >> Database teknologi >  >> RDS >> Mysql

MySQL og lås en tabel, læs og afkort derefter

Du kan ikke afkorte en tabel, der er låst til skrivning. Dette skyldes, at "truncate" betyder "ødelæg tabellen, og genskab en ny med det samme skema."

Du kan dog tømme bordet. I stedet for TRUNCATE TABLE asin_one_time_only brug DELETE FROM asin_one_time_only . Bemærk, at dette ikke vil nulstille autoincrement-nummereringen. Hvis du også vil nulstille den, skal du bruge ALTER TABLE asin_one_time_only auto_increment=1

Jeg foreslår, at du gør dette:

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. Automatisk stigning i Oracle uden brug af en trigger

  2. 2019 Open Source-databaserapport:Topdatabaser, Public Cloud vs. On-Premise, Polyglot Persistence

  3. Gør SQL Server-ydeevne let

  4. Start og udfyldning af en Postgres-container i Docker