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

Ubah semua kolom dalam tabel menjadi 'tidak nol' apa pun yang terjadi

Cara cepat adalah dengan menulis pernyataan perubahan Anda ke dalam file

select
concat('ALTER TABLE ', c.TABLE_NAME, ' CHANGE ', c.COLUMN_NAME, ' ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL;') as alter_statement
into outfile '/tmp/alter.txt'
from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'your_database_name';

Kemudian jalankan konten file

source /tmp/alter.txt

dan selesai...

Mengujinya di DB taman bermain dan berhasil untuk saya, Anda mungkin masih ingin memeriksa ulang file sebelum menjalankan :)

P.S .:Saya belum memeriksa bagaimana nilai NULL ditangani. IIRC Anda harus memiliki nilai default? Tidak yakin sekarang. Silakan uji ini sebelum menggunakannya.

EDIT 1:Untuk memiliki satu pernyataan per tabel:

select
concat('ALTER TABLE ', c.TABLE_NAME, GROUP_CONCAT(' MODIFY COLUMN ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL')) as alter_statement
from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'your_database_name'
group by c.TABLE_NAME

EDIT 2:

Yang ini berfungsi

select concat(alter_statement, ';')
into outfile '/tmp/alter.txt'
from (
select
concat('ALTER TABLE ', c.TABLE_NAME, GROUP_CONCAT(' CHANGE ', c.COLUMN_NAME, ' ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL')) as alter_statement

from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'playground'
group by c.TABLE_NAME
) sq

, tetapi group_concat() panjangnya terbatas, jadi Anda mungkin mendapatkan kesalahan sintaks jika Anda memiliki terlalu banyak kolom dalam sebuah tabel. Kemudian Anda masih memiliki opsi pertama dari atas, atau lihat entri manual ini :

SET [GLOBAL | SESSION] group_concat_max_len = val;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP menulis 800 catatan ke file (.txt) dari database

  2. Perbarui Kueri berdasarkan kondisi

  3. Cara menyetel nilai multi pilih dari objek array di yii2 saat memperbarui

  4. MySQL Menggabungkan Dua ID Tabel untuk Menghasilkan Hasil dari Satu Tabel ke Tabel lainnya

  5. Generator RSS dengan fungsi caching