sql >> Databasteknik >  >> RDS >> Mysql

MySQL swap primära nyckelvärden

Använd inte tillfälliga tabeller för detta.

Från manualen :

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

UPPDATERING:

Ursäkta om jag inte förstår rätt, men varför fungerar inte ett enkelt trevägsutbyte?

Så här:

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. Hur trunkerar man en tabell med Lära 2?

  2. Känn till relationer mellan alla tabeller i databasen i SQL Server

  3. Vad är det bästa sättet att infoga flera rader i PHP PDO MYSQL?

  4. Hur installerar och konfigurerar mysql 5.6.16 i Windows 7