【问题标题】:Serial not auto-incrementing when insert table into another table将表插入另一个表时序列不会自动递增
【发布时间】:2022-01-17 12:07:46
【问题描述】:

当我将一个表(站)插入另一个表(帖子)时,自动递增序列“id_hta”丢失。

INSERT INTO 站 (code_hta, geom_hta) 从帖子中选择代码,geom;

所以,我试过了:

INSERT INTO station (id_hta, code_hta, geom_hta) 
    VALUES(DEFAULT, (SELECT code_gto, geom FROM postes));

但我收到一个错误:查询必须返回单列。

欢迎任何帮助。

【问题讨论】:

    标签: postgresql sql-insert


    【解决方案1】:

    当源是SELECT 语句时,您不能使用values 子句。而且您不能在 SELECT 中使用 DEFAULT 子句。所以解决方法是不指定自动生成的列:

    INSERT INTO station (code_hta, geom_hta) 
    SELECT code_gto, geom 
    FROM postes
    

    【讨论】:

    • 当我使用这段代码时,我失去了 id_hta 的自动递增。所有添加的行都不会跟随初始增量。
    • 如果id_hta 定义为identity(或过时的serial)列,则此增加新行的值。如果没有,则 id_hta 没有与之关联的序列。
    • @ennine:见这里:dbfiddle.uk/…
    • 非常感谢。它完美地工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多