ไวยากรณ์นี้ไม่ถูกต้องในPostgreSQL รุ่นใด ๆ :
ALTER SEQUENCE payments_id_seq LASTVALUE 22
สิ่งนี้จะได้ผล:
ALTER SEQUENCE payments_id_seq RESTART WITH 22;
และเทียบเท่ากับ:
SELECT setval('payments_id_seq', 22, FALSE);
มากขึ้นในปัจจุบันด้วยตนเองสำหรับการALTER SEQUENCE
และฟังก์ชั่นลำดับ
โปรดทราบว่าsetval()
คาดว่าอย่างใดอย่างหนึ่งหรือ(regclass, bigint)
(regclass, bigint, boolean)
ในตัวอย่างข้างต้นฉันกำลังจัดหาตัวอักษรที่ไม่ได้พิมพ์ มันก็ใช้ได้เหมือนกัน แต่ถ้าคุณป้อนตัวแปรที่พิมพ์ลงในฟังก์ชั่นคุณอาจต้องใช้การพิมพ์แบบชัดแจ้งเพื่อตอบสนองการจำแนกประเภทฟังก์ชั่น ชอบ:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);
สำหรับการดำเนินการซ้ำคุณอาจสนใจ:
ALTER SEQUENCE payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]
เก็บRESTART
หมายเลขเริ่มต้นซึ่งใช้สำหรับการRESTART
โทรครั้งต่อไปโดยไม่มีค่า คุณต้องการ Postgres 8.4 หรือใหม่กว่าสำหรับส่วนสุดท้าย
setval()
จะมีข้อโต้แย้งอย่างน้อยสองข้อ