PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara memperbarui ID urutan postgreSQL secara massal untuk semua tabel

Dengan asumsi bahwa semua urutan yang digunakan dimiliki oleh kolom masing-masing, mis. melalui serial atau identity atribut, Anda dapat menggunakan ini, untuk mengatur ulang semua (dimiliki) urutan dalam database saat ini.

with sequences as (
  select *
  from (
    select table_schema,
           table_name,
           column_name,
           pg_get_serial_sequence(format('%I.%I', table_schema, table_name), column_name) as col_sequence
    from information_schema.columns
    where table_schema not in ('pg_catalog', 'information_schema')
  ) t
  where col_sequence is not null
), maxvals as (
  select table_schema, table_name, column_name, col_sequence,
          (xpath('/row/max/text()',
             query_to_xml(format('select max(%I) from %I.%I', column_name, table_schema, table_name), true, true, ''))
          )[1]::text::bigint as max_val
  from sequences
) 
select table_schema, 
       table_name, 
       column_name, 
       col_sequence,
       coalesce(max_val, 0) as max_val,
       setval(col_sequence, coalesce(max_val, 1)) --<< this will change the sequence
from maxvals;

Bagian pertama memilih semua urutan yang dimiliki oleh kolom. Bagian kedua kemudian menggunakan query_to_xml() untuk mendapatkan nilai maksimal untuk kolom yang terkait dengan urutan itu. Dan SELECT terakhir kemudian menerapkan nilai maksimal itu ke setiap urutan menggunakan setval() .

Anda mungkin ingin menjalankannya tanpa setval() telepon dulu untuk melihat apakah semuanya sesuai kebutuhan Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara untuk menggunakan ARRAY di Entity Framework + PostgreSql

  2. Mengonversi Kumpulan Hasil dari SQL Array ke Array of Strings

  3. Bagaimana Asin() Bekerja di PostgreSQL

  4. SQLAlchemy create_all() tidak membuat tabel

  5. Cara Mengonversi Kasus String di PostgreSQL