Rumah > Soal Jawab > teks badan
作插入操作:
name = 'test'
cur.execute("INSERT INTO scholars(name) VALUES('{}') returning id".format(name))
id = cur.fetchone()
print(id)
报错如下:
psycopg2.IntegrityError: duplicate key value violates unique constraint "idx_16514_primary"
DETAIL: Key (id)=(2321) already exists.
id=2301
时插入成功,并且成功返回ID。
之后插入一次,id+1,报错ID已存在。
数据库插入操作,ID不是自动寻找最大值,然后自增么?
怪我咯2017-04-18 09:46:40
Di sini saya mendapat jawapan Bagaimana untuk menetapkan semula urutan kunci utama postgres apabila ia tidak segerak? kepada soalan ini.
Sesuatu yang tidak kena dengan id sequence
saya.
Saya membetulkannya dengan melakukan ini.
SELECT MAX(id) FROM scholars;
=> 11518
SELECT nextval('scholars_id_seq');
=> 2324 # di sini adalah lebih rendah daripada maks(id)
SELECT setval('scholars_id_seq', (SELECT MAX(id) FROM scholars));
=> 11518 # betulkan
SELECT nextval('scholars_id_seq');
=> 11519 # selesai!