Soru Tamsayı seriye dönüştürme


Bir birincil anahtar sütun "gid" olan bir tablo var ve onun türü "Tamsayı NOT NULL". Bu tabloya bazı değerler ekleyebilmem için "Serial NOT NULL" a dönüştürmek istiyorum. Diziye dönüştürmek için aşağıdaki komutları kullandım:

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 tamsayıyı seriye dönüştürdü. Ancak hata oluştuğunda tabloya bazı veriler girilirken:

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

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


18
2017-09-25 05:25


Menşei


Olası kopya Postgres'te var olan sütuna 'seri' ekleme - kryger


Cevaplar:


Gid sütununun maksimum değerini seçin (maks_gid):

SELECT max(gid) FROM test_table;

Ve sıra için başlangıç ​​noktası olarak kullanın (muhtemelen, max_gid + 1):

ALTER SEQUENCE test_table_gid_seq RESTART WITH max_gid;

25
2017-09-25 05:53



hala kolay değil sarmalayıcı? - jangorecki