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

Apakah mungkin untuk menjatuhkan semua batasan kunci asing di atas meja sekaligus di mySQL 5?

Saya memiliki solusi yang mirip dengan jawaban Bing, tetapi butuh satu langkah lebih jauh untuk menjadi otomatis dan dapat digunakan kembali dalam suatu prosedur.

DROP PROCEDURE IF EXISTS dropForeignKeysFromTable;

delimiter ///
create procedure dropForeignKeysFromTable(IN param_table_schema varchar(255), IN param_table_name varchar(255))
begin
    declare done int default FALSE;
    declare dropCommand varchar(255);
    declare dropCur cursor for 
        select concat('alter table ',table_schema,'.',table_name,' DROP FOREIGN KEY ',constraint_name, ';') 
        from information_schema.table_constraints
        where constraint_type='FOREIGN KEY' 
            and table_name = param_table_name
            and table_schema = param_table_schema;

    declare continue handler for not found set done = true;

    open dropCur;

    read_loop: loop
        fetch dropCur into dropCommand;
        if done then
            leave read_loop;
        end if;

        set @sdropCommand = dropCommand;

        prepare dropClientUpdateKeyStmt from @sdropCommand;

        execute dropClientUpdateKeyStmt;

        deallocate prepare dropClientUpdateKeyStmt;
    end loop;

    close dropCur;
end///

delimiter ;

Karena pernyataan yang telah disiapkan hanya dapat menangani satu pernyataan pada satu waktu, prosedur akan mengulang kunci asing menggunakan kursor dan mengeksekusi setiap penurunan satu per satu.

Untuk menggunakan prosedur di salah satu tabel Anda cukup gunakan yang berikut ini, ganti table_schema dan table_name dengan nilai Anda:

call dropForeignKeysFromTable('table_schema', 'table_name');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara menggunakan mysql_data_seek dengan PDO?

  2. VS 2019 dan nama database duplikat MySQL Entity Framework

  3. PHP MySQL memasukkan kueri pembuatan array asosiatif multimensional dari kunci array

  4. Memeriksa sumber daya hasil MySQL yang valid

  5. SQL memperbarui satu kolom dari kolom lain di tabel lain