微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在PostgresQL中的表中插入多个默认行

我有一个表,列中的列采用认值:
create table indexing_table
(
  id SERIAL PRIMARY KEY,created_at TIMESTAMP WITH TIME ZONE DEFAULT Now(),);

如何在此表中插入多个认行?我是否必须重复该命令:

insert into indexing_table default values;

我想要插入多少次?

我有同样的问题.有头表只包含序列生成的id.我需要在快照表中插入行,当然我必须首先填充标题.所以我有许多行的临时表,并希望快速插入到两个表.

循环很容易编写,但它不是一种优化查询方法(在实现过程中,它在不同的数据库/方案上运行了数千次)

可以使用特定值运行插入

INSERT INTO csh33 (id)
    SELECT (SELECT last_value FROM csh33_id_seq) + row_number() OVER ()
        FROM temp_tss11;

-- Primary key "id" is Serial so dont name it
INSERT INTO css33 (header_id,time_from,time_to,code,name)
    SELECT (SELECT last_value FROM csh33_id_seq) + row_number() OVER (),Now(),null,name,FROM temp_tss11;

SELECT setval('csh33_id_seq',(SELECT max(id) FROM csh33) + 1);

或者我不能用认值命名字段

INSERT INTO csh33 SELECT FROM temp_tss11;

-- But must consider raised sequence in filling snapshot table (Don't care about ordering,so only subtract)
INSERT INTO css33 (header_id,name)
    SELECT (SELECT last_value FROM csh33_id_seq) - row_number() OVER (),FROM temp_tss11;

但是你的问题

INSERT INTO yourTableName SELECT generate_series(1,100)

注意我使用PG 9.4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐