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

MySQL суап стойности на първичния ключ

Не използвайте временни таблици за това.

От ръководството :

mysql> SELECT * FROM temp_table, temp_table AS t2;
ERROR 1137: Can't reopen table: 'temp_table'

АКТУАЛИЗИРАНЕ:

Съжалявам, ако не съм разбрал правилно, но защо обикновената трипосочна смяна не работи?

Като това:

create table yourTable(id int auto_increment, b int, primary key(id));

insert into yourTable(b) values(1), (2);
select * from yourTable;

DELIMITER $$
create procedure pkswap(IN a int, IN b int)
BEGIN
select @max_id:=max(id) + 1 from yourTable;
update yourTableset [email protected]_id where id = a;
update yourTableset id=a where id = b;
update yourTableset id=b where id = @max_id;
END $$
DELIMITER ;

call pkswap(1, 2);

select * from yourTable;


  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 Как да съпоставим две думи в изречение

  3. TIME_TO_SEC() Примери – MySQL

  4. MySQL - ИЗБЕРЕТЕ името, което идва първо по азбучен ред

  5. Защо резултатите от SQL заявка не се връщат в реда, в който очаквам?