Saya ingin memaksa bidang kenaikan otomatis tabel ke beberapa nilai, saya mencoba dengan ini:
ALTER TABLE product AUTO_INCREMENT = 1453
DAN
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
Saya baru di postgres :(
Saya punya meja product
dengan Id
dan name
bidang
Jawaban:
Jika Anda membuat tabel
product
denganid
kolom, maka urutannya tidak hanya disebutproduct
, melainkanproduct_id_seq
(yaitu,${table}_${column}_seq
).Ini adalah
ALTER SEQUENCE
perintah yang Anda butuhkan:Anda dapat melihat urutan dalam database Anda menggunakan
\ds
perintah di psql. Jika Anda melakukannya\d product
dan melihat batasan default untuk kolom Anda,nextval(...)
panggilan akan menentukan nama urutan juga.sumber
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, di mana "seq" adalah teks literal, dan Anda memasukkan angka untuk #. Jangan abaikan garis bawah. :-)ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, Anda harus melakukannyaRESTART WITH 1454
.Ini adalah perintah yang Anda cari, dengan asumsi urutan Anda untuk tabel produk adalah product_id_seq:
sumber
Perintah berikut melakukan ini secara otomatis untuk Anda: Ini juga akan menghapus semua data dalam tabel. Jadi berhati-hatilah.
sumber
TABLE
kunci tersebut berlebihan.TRUNCATE someTable RESTART IDENTITY;
cukup.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Untuk mengatur penghitung urutan:
Jika Anda tidak tahu nama urutannya gunakan
pg_get_serial_sequence
fungsi:Parameternya adalah nama tabel dan nama kolom.
Atau cukup kirimkan
\d product
saatpsql
diminta:sumber
- Ubah nilai awal dari urutan
Sama tetapi dinamis:
Saya setuju bahwa penggunaan SELECT mengganggu tetapi berhasil.
Sumber: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
sumber
brew services restart postgresql
Dikonversi dari komentar demi kenyamanan pengunjung
Dari pesan ini tidak jelas apa sintaks yang benar. Ini:
sumber
jika Anda ingin Atur ulang kenaikan otomatis dari GUI, kemudian ikuti langkah-langkah ini.
sumber
Jika Anda memiliki tabel dengan kolom IDENTITY yang ingin Anda setel ulang nilai selanjutnya, Anda dapat menggunakan perintah berikut:
sumber
sequence
atau Anda TIDAK dapat memotong tabel. Saya pikir itu jawaban terbaikUntuk mengatur ulang kenaikan otomatis, Anda harus mendapatkan nama urutan dengan menggunakan kueri berikut.
Sintaksis:
Contoh:
Permintaan akan mengembalikan nama urutan autoid sebagai "Demo_autoid_seq" Kemudian gunakan permintaan berikut untuk mengatur ulang autoid
Sintaksis:
Contoh:
sumber
Untuk mendapatkan urutan id, gunakan
Ini akan memberi Anda id sequesce sebagai tableName_ColumnName_seq
Untuk Mendapatkan Nomor Terakhir, gunakan
atau jika Anda tahu urutan id sudah menggunakannya secara langsung.
Ini akan memberi Anda nomor benih terakhir
Untuk Reset gunakan nomor seed
sumber
Gunakan kueri ini untuk memeriksa apa Kunci Urutan dengan Skema dan Tabel,
Gunakan kueri ini untuk meningkatkan nilai satu per satu,
Saat memasukkan ke tabel, nilai tambahan berikutnya akan digunakan sebagai kunci (111).
Gunakan kueri ini untuk menetapkan nilai spesifik sebagai nilai yang ditambahkan
Saat memasukkan ke tabel, nilai tambahan berikutnya akan digunakan sebagai kunci (121).
sumber
Perhatikan bahwa jika Anda memiliki nama tabel dengan '_', itu dihapus dalam nama urutan.
Misalnya, nama tabel: kolom user_tokens: id Nama urutan: usertokens_id_seq
sumber