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

Актуализиране на първичния ключ на MySQL

Следващия път използвайте един израз „alter table“, за да актуализирате първичния ключ.

alter table xx drop primary key, add primary key(k1, k2, k3);

За да поправите нещата:

create table fixit (user_2, user_1, type, timestamp, n, primary key( user_2, user_1, type) );
lock table fixit write, user_interactions u write, user_interactions write;

insert into fixit 
select user_2, user_1, type, max(timestamp), count(*) n from user_interactions u 
group by user_2, user_1, type
having n > 1;

delete u from user_interactions u, fixit 
where fixit.user_2 = u.user_2 
  and fixit.user_1 = u.user_1 
  and fixit.type = u.type 
  and fixit.timestamp != u.timestamp;

alter table user_interactions add primary key (user_2, user_1, type );

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. предложение за структура на таблицата на mysql?

  2. Symfony3 - SQLSTATE[HY000] [2002] Няма такъв файл или директория

  3. Как да инсталирате MySQL на Debian 8

  4. MySQL сървърът изчезна - точно за 60 секунди

  5. PHP mySQL - Вмъкване на нов запис в таблица с автоматично увеличение на първичния ключ