ฉันจะระบุได้อย่างไรว่าคอลัมน์ควรเพิ่มขึ้นอัตโนมัติใน pgAdmin


14

ฉันได้เริ่มเรียนรู้ pgAdmin III เพื่อจัดการฐานข้อมูล PostgreSQL แต่มันไม่ใช่แอพพลิเคชั่นที่ใช้งานง่าย

หากฉันสร้างหรือสร้างตารางด้วย pgAdmin III ฉันจะเพิ่ม "ฟังก์ชันเพิ่มค่าอัตโนมัติ" ในคอลัมน์รหัสที่มีจำนวนเต็มประเภทได้อย่างไร

คำตอบ:


17

สองตัวเลือก: ใช้ "ประเภทข้อมูล" SERIALหรือสร้างลำดับและใช้ลำดับนี้เป็นค่าเริ่มต้นสำหรับจำนวนเต็มของคุณ:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;

1
คำตอบนี้สามารถอัปเดตเพื่อรวมGENERATED BY DEFAULT AS IDENTITYกับ Postgres> = 10
Madbreaks

15

ถ้าคุณต้องการทำสิ่งนี้ใน PGAdmin มันง่ายกว่าการใช้บรรทัดคำสั่ง ดูเหมือนว่าใน PostgreSQL เพื่อเพิ่มการเพิ่มอัตโนมัติในคอลัมน์ก่อนอื่นเราต้องสร้างลำดับการเพิ่มอัตโนมัติและเพิ่มลงในคอลัมน์ที่ต้องการ ฉันทำอย่างนี้

1) ประการแรกคุณต้องแน่ใจว่ามีคีย์หลักสำหรับตารางของคุณ เก็บประเภทข้อมูลของคีย์หลักไว้ด้วยสีใหญ่หรือเล็ก (ฉันใช้ bigint ไม่สามารถหาประเภทข้อมูลที่เรียกว่า serial ตามที่กล่าวไว้ในคำตอบอื่น ๆ )

2) จากนั้นใส่ลำดับโดยคลิกขวาที่ sequence-> เพิ่มลำดับใหม่ หากไม่มีข้อมูลในตารางให้คงลำดับไว้เหมือนเดิมอย่าทำการเปลี่ยนแปลงใด ๆ เพียงบันทึกไว้ หากมีข้อมูลอยู่ให้เพิ่มค่าสุดท้ายหรือค่าสูงสุดในคอลัมน์คีย์หลักให้กับค่าปัจจุบันในแท็บคำจำกัดความที่แสดงด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่

3) ในที่สุดเพิ่มบรรทัดnextval('your_sequence_name'::regclass)เป็นค่าเริ่มต้นในคีย์หลักของคุณที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่ ตรวจสอบให้แน่ใจว่าชื่อลำดับถูกต้องที่นี่ นี่คือทั้งหมดที่เพิ่มขึ้นอัตโนมัติควรจะทำงาน


4
ฉันไม่เห็นด้วยกับ "ง่ายขึ้นใน PgAdmin" คุณคิดว่าการคลิกจะทำได้ง่ายกว่าการสร้างคอลัมน์SERIALใช่ไหม
ypercubeᵀᴹ

1
ฉันจะพูดง่ายขึ้นสำหรับผู้ที่เคยชินกับ GUI และถ้าคุณไม่คุ้นเคยกับบรรทัดคำสั่ง :)
toing_toing
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.