Saya sudah mencoba yang berikut ini, tetapi saya tidak berhasil:
ALTER TABLE person ALTER COLUMN dob POSITION 37;
sql
database
postgresql
alter-table
Huuuze
sumber
sumber
Jawaban:
" Ubah posisi kolom " di Wiki PostgreSQL mengatakan:
Itu cukup lemah, tetapi dalam pertahanan mereka, dalam SQL standar, tidak ada solusi untuk memposisikan ulang kolom juga. Merek database yang mendukung perubahan posisi ordinal kolom mendefinisikan ekstensi ke sintaks SQL.
Satu gagasan lain muncul pada saya: Anda dapat menentukan a
VIEW
yang menentukan urutan kolom sesuka Anda, tanpa mengubah posisi fisik kolom di tabel dasar.sumber
Di PostgreSQL, sambil menambahkan bidang, itu akan ditambahkan di akhir tabel. Jika kita perlu memasukkan ke posisi tertentu maka
sumber
Posting ini sudah lama dan mungkin sudah terpecahkan tetapi saya memiliki masalah yang sama. Saya menyelesaikannya dengan membuat tampilan tabel asli yang menentukan urutan kolom baru.
Dari sini saya bisa menggunakan view atau membuat tabel baru dari view.
Ubah nama atau jatuhkan tabel asli dan atur nama tabel baru ke tabel lama.
sumber
Satu, meskipun merupakan opsi yang canggung untuk mengatur ulang kolom ketika urutan kolom harus benar-benar diubah, dan kunci asing digunakan, pertama-tama membuang seluruh database dengan data, lalu membuang hanya schema (
pg_dump -s databasename > databasename_schema.sql
). Selanjutnya edit file skema untuk mengatur ulang kolom seperti yang Anda inginkan, lalu buat ulang database dari skema, dan terakhir pulihkan data ke database yang baru dibuat.sumber
Saya rasa Anda tidak bisa saat ini: lihat artikel ini di wiki Postgresql .
Tiga solusi dari artikel ini adalah:
sumber
Buka tabel di PGAdmin dan di panel SQL di bagian bawah salin pernyataan SQL Create Table. Kemudian buka Alat Kueri dan tempel. Jika tabel memiliki data, ubah nama tabel menjadi 'new_name', jika tidak, hapus komentar "-" di baris Drop Table. Edit urutan kolom sesuai kebutuhan. Perhatikan koma yang hilang / berlebihan di kolom terakhir jika Anda telah memindahkannya. Jalankan perintah SQL Create Table baru. Segarkan dan ... voila.
Untuk tabel kosong pada tahap desain cara ini cukup praktis.
Jika tabel memiliki data, kita perlu mengatur ulang urutan kolom datanya juga. Ini mudah: gunakan
INSERT
untuk mengimpor tabel lama ke versi barunya dengan:... di mana
c2
,c3
,c1
adalah kolomc1
,c2
,c3
dari meja tua di posisi baru mereka. Harap dicatat bahwa dalam hal ini Anda harus menggunakan nama 'baru' untuk tabel 'lama' yang telah diedit, atau Anda akan kehilangan data Anda . Jika nama kolomnya banyak, panjang dan / atau kompleks, gunakan metode yang sama seperti di atas untuk menyalin struktur tabel baru ke editor teks, dan buat daftar kolom baru di sana sebelum menyalinnya ke dalamINSERT
pernyataan.Setelah memeriksa bahwa semuanya baik-baik saja,
DROP
tabel lama dan ubah nama 'baru' menjadi 'lama' menggunakanALTER TABLE new RENAME TO old;
dan Anda selesai.sumber
Saya sedang mengerjakan pemesanan ulang banyak tabel dan tidak ingin menulis kueri yang sama berulang kali, jadi saya membuat skrip untuk melakukan semuanya untuk saya. Intinya, ini:
pg_dump
pg_dump
kueri asli untuk membuat tabel yang diurutkan ulang dengan dataIni dapat digunakan dengan menjalankan perintah sederhana berikut:
Ini mencetak sql sehingga Anda dapat memverifikasi dan mengujinya, itulah alasan utama saya mendasarkannya
pg_dump
. Anda dapat menemukan repo github di sini .sumber
Saya menggunakan Django dan membutuhkan kolom id di setiap tabel jika anda tidak ingin pusing. Sayangnya, saya ceroboh dan tabel saya bp.geo_location_vague tidak berisi bidang ini. Saya memulai trik kecil. Langkah 1:
Langkah 2: (tanpa membuat tabel - tabel akan dibuat secara otomatis!)
Langkah 3:
Karena saya perlu memiliki pseudotype seri besar di tabel. Setelah SELECT * menjadi pg akan membuat tipe bigint insetad bigserial.
langkah 4: Sekarang kita dapat melepaskan tampilan, melepaskan tabel sumber dan mengganti nama tabel baru dengan nama lama. Triknya berhasil diakhiri.
sumber
Ada beberapa solusi untuk memungkinkannya:
Menciptakan kembali seluruh tabel
Buat kolom baru di dalam tabel saat ini
Buat tampilan
https://tableplus.com/blog/2018/09/postgresql-is-it-possible-to-alter-column-order-position-in-a-table.html
sumber