Mengubah Urutan PostgreSQL Secara Manual
Dalam PostgreSQL, jujukan adalah penting untuk menjana nilai ID unik untuk baris jadual. Kadangkala, ia menjadi perlu untuk menetapkan nilai semasa jujukan kepada nombor tertentu. Walau bagaimanapun, sesetengah pembangun menghadapi cabaran semasa mencuba tugas ini.
Satu isu biasa ialah penggunaan fungsi setval() yang salah. Coretan kod berikut menunjukkan pendekatan yang salah:
SELECT setval('payments_id_seq'), 21, true;
Pertanyaan ini mengakibatkan ralat kerana fungsi setval() menjangkakan dua atau tiga argumen, bukan hanya satu. Sintaks yang diperbetulkan ialah:
SELECT setval('payments_id_seq', 21, true); -- next value will be 22
Isu kedua melibatkan percubaan untuk mengubah urutan menggunakan arahan ALTER SEQUENCE. Walaupun arahan ini boleh mengubah suai sifat jujukan, ia tidak boleh digunakan untuk menetapkan nilai semasa.
Untuk berjaya menetapkan nilai semasa jujukan kepada nombor tertentu, gunakan sintaks berikut:
SELECT setval('sequence_name', new_value);
Pastikan bahawa parameter sequence_name sepadan dengan nama jujukan yang anda ingin ubah suai.
Contohnya, untuk menetapkan arus nilai jujukan payments_id_seq hingga 22, gunakan pertanyaan berikut:
SELECT setval('payments_id_seq', 22);
Ingat, fungsi setval() boleh dipanggil kedua-duanya dengan atau tanpa pernyataan SELECT. Walau bagaimanapun, pendekatan terdahulu mengembalikan nilai jujukan baharu, manakala pendekatan kedua tidak.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nilai Semasa Urutan PostgreSQL dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!