加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 18:06:41 所属栏目:百科 来源:网络整理
导读:我有一个表,列中的列采用默认值: create table indexing_table( id SERIAL PRIMARY KEY,created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),); 如何在此表中插入多个默认行?我是否必须重复该命令: insert into indexing_table default values; 我想要插
我有一个表,列中的列采用默认值:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读