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

Как да копирам данни от друга таблица без да заключвам таблицата в MYSQL 6.2?

Дайте, че таблиците имат точно същите колони, можете да направите нещо подобно:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
INSERT INTO NEW_TABLE (SELECT * FROM OLD_TABLE);
COMMIT ;

Включих допълнително обяснение въз основа на Wistar коментар. Нивата на четене, които могат да се използват тук, са:

  • ЧЕТЕТЕ СЕ ОТВЪРЗАНИ :Донякъде подобно на Oracle ниво на изолация по отношение на последователни (незаключващи) четения:Всяко последователно четене, дори в рамките на една и съща транзакция, задава и чете своя собствена прясна моментна снимка
  • ЧЕТЕТЕ НЕПОЛУЧЕНО :Операторите SELECT се изпълняват по незаключващ начин, но може да се използва възможна по-ранна версия на ред. По този начин, използвайки това ниво на изолация, такива четения не са последователни. Това се нарича още мръсно четене. В противен случай това ниво на изолация работи като READ COMMITTED.
  • ПОВТОРЯЕМО ЧЕТЕНЕ :Това е нивото на изолация по подразбиране за InnoDB. За последователни четения има важна разлика от нивото на изолация READ COMMITTED:Всички последователни четения в рамките на една и съща транзакция четат моментната снимка, установена от първото четене. Тази конвенция означава, че ако издадете няколко обикновени (незаключващи) оператора SELECT в рамките на една и съща транзакция, тези SELECT оператори също са последователни един спрямо друг.
  • МОЖЕ СЕ СЕРИАЛИЗИРАНЕ :Това ниво е като REPEATABLE READ, но InnoDB имплицитно преобразува всички обикновени изрази SELECT в SELECT ... LOCK IN SHARE MODE, ако автоматичното записване е забранено. Ако автоматичното завършване е активирано, SELECT е собствена транзакция. Следователно е известно, че се чете само и може да се сериализира, ако се изпълнява като последователно (незаключващо) четене и не е необходимо да блокира за други транзакции. (За да принудите обикновен SELECT да блокира, ако други транзакции са променили избраните редове, деактивирайте автоматичното завършване.)

Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Команди не са синхронизирани; не можете да изпълните тази команда сега

  2. mysql_fetch_array връща само един ред

  3. предаде параметри в съхранената процедура за вмъкване на заявка в laravel 4

  4. MYSQL:Показване на пропуснати записи след LOAD DATA INFILE?

  5. Какъв е максималният размер на заявката за mysql?