2012-12-21 16 views

Trả lời

2

Nếu bạn muốn thiết lập lại trình tự sau đó:

setval('sequence_name', 0) 

Để liệt kê các vấn đề tên chuỗi tồn tại một \ds tại dấu nhắc lệnh psql.

+0

Lưu ý rằng để xác định chương trình của chuỗi của một lĩnh vực có chức năng pg_get_serial_sequence. chọn pg_get_serial_sequence ('tablename', 'colname'); –

+0

Sai ID có nghĩa là, Nó không thực sự tạo ra giá trị ID. – user1369887

44

Hãy thử

TRUNCATE TABLE table_name 
RESTART IDENTITY; 

Nó sẽ

Automatically restart sequences owned by columns of the truncated table(s).

chi tiết ở đây: TRUNCATE

+0

LRI: lỗi cú pháp tại hoặc gần "RESTART" LINE 1: cắt bớt sản phẩm bảng RESTART IDENTITY; – user1369887

+0

@ user1369887 Bạn có phiên bản PostgreSQL nào? –

+0

Phiên bản máy chủ của tôi là: server 8.3.16 – user1369887

9

Sau đây là cách tiêu chuẩn để thiết lập lại trình tự:

truncate table table_name restart identity; 

nhưng trong một số ver sion & nền tảng, đó là lỗi cú pháp,

trong trường hợp đó, bạn có thể cắt ngắn mà không tự khởi động lại, và thay đổi liên tục với sql khác, hãy thử này:

truncate table table_name; 
alter sequence seq_name start 1; 
2

Kiểm tra tiếp theo

ALTER SEQUENCE sequence_name RESTART WITH 1; 
1

Cách tốt nhất để đặt lại chuỗi để bắt đầu lại với số 1 là thực hiện những điều sau đây sau khi bạn đã cắt thành công nó:

ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1 

Vì vậy, ví dụ cho bảng người sử dụng nó sẽ là:

ALTER SEQUENCE users_id_seq RESTART WITH 1 
+1

Cảm ơn bạn đã trích đoạn mã này, đoạn mã này có thể cung cấp một số trợ giúp tức thì, có giới hạn. Một lời giải thích thích hợp [sẽ cải thiện rất nhiều] (// meta.stackexchange.com/q/114762) giá trị lâu dài của nó bằng cách hiển thị * tại sao * đây là một giải pháp tốt cho vấn đề, và sẽ làm cho nó hữu ích hơn cho người đọc trong tương lai các câu hỏi tương tự khác. Vui lòng [sửa] câu trả lời của bạn để thêm một số giải thích, bao gồm các giả định bạn đã thực hiện. –

+0

Có bạn đi .... – jahmed31

Các vấn đề liên quan