Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL menukar nilai kunci utama

Jangan gunakan tabel sementara untuk ini.

Dari manual :

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

PERBARUI:

Maaf jika saya tidak melakukannya dengan benar, tetapi mengapa pertukaran tiga arah sederhana tidak berfungsi?

Seperti ini:

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. Cara Memesan berdasarkan Nama Bulan di MySQL

  2. Menggunakan kursor dalam prosedur tersimpan untuk mengulang baris MySQL

  3. Pengecoran MySQL dari -1 mengembalikan 18446744073709551615

  4. Bagaimana cara menghubungkan database MySQL ke aplikasi ReactJS?

  5. Pembaruan Flask-SQLAlchemy membuat rekor baru di MySQL