我有一个表,列中的列采用默认值:
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] 举报,一经查实,本站将立刻删除。