2012-09-25 23 views
18

Birincil anahtar sütunu "gid" olan bir tablo var ve türü "Tamsayı NULL" değil. Bu tabloya bazı değerler ekleyebilmem için "Serial NOT NULL" dosyasına dönüştürmek istiyorum. Ben seri haline dönüştürmek için aşağıdaki komutları kullanılır:Tamsayı seriye dönüştürme

CREATE SEQUENCE test_table_gid_seq 
     INCREMENT 1 
     MINVALUE 1 
     MAXVALUE 2147483648 START 1 
     CACHE 1; 

ALTER TABLE test_table ALTER COLUMN gid 
     SET DEFAULT nextval('test_table_gid_seq'::regclass); 

Bu komut seri için tamsayı dönüştürülür. Ancak aşağıdaki tabloya bazı veriler girilirken hata oluştu:

HATA: yinelenen anahtar değeri benzersiz kısıtlamayı "pk_test" ihlal ediyor.

Lütfen bunu çözmemde bana yardımcı olun. Tamsayı seriye dönüştürmek için başka bir yöntem var mı?

+0

olası çift 'seri 'Postgres'teki mevcut sütuna' (http://stackoverflow.com/questions/9490014/adding-serial-to-existing-column-in-postgres) – kryger

cevap

25

GID kolonu (max_gid) maksimum değeri seçin:

SELECT max(gid) FROM test_table; 

ve (max_gid + 1 muhtemelen) sekansı için başlangıç ​​noktası olarak kullanılmaktadır: [eklenmesi

ALTER SEQUENCE test_table_gid_seq RESTART WITH max_gid; 
+0

hala kolay ambalajlama değil mi? – jangorecki

İlgili konular