我想在ic_countries
(plunet_english列)中添加一些新值,但我还想增加id(landid
)。该表设置为唯一ID,但不是自动增量。
遗憾的是,我的方法在lastval()+1
周围提供了一个未定义的错误。我试图添加一个从硬编码值开始递增的函数。即使这似乎也无法实现。
INSERT INTO ic_countries (landid, plunet_english)
SELECT lastval()+1, name
FROM country
WHERE name NOT IN
(
SELECT plunet_english
FROM ic_countries
)
答案 0 :(得分:1)
如果要在现有表中设置自动增量,请执行此操作
使用,获取字段landid
的下一个数字
SELECT MAX(landid) + 1 FROM ic_countries
如果100
那么
创建序列
CREATE SEQUENCE seq_ic_countries_landid START WITH 100;
为表
指定此序列ALTER TABLE ic_countries ALTER COLUMN landid SET DEFAULT nextval('seq_ic_countries_landid');
现在你可以插入如下:
INSERT INTO ic_countries ( plunet_english)
SELECT name --landid will be automatically increment
FROM country
WHERE name NOT IN
(
SELECT plunet_english
FROM ic_countries
)