Я могу вставить несколько строк в таблицу со значениями по умолчанию для всех столбцов способом RBAR :
create table course(course_id serial primary key);
do $$
begin
for i in 1..100000 loop
insert into course default values;
end loop;
end;$$;
Есть ли способ сделать то же самое с одним оператором SQL?
postgresql
default-value
postgresql-9.4
Джек говорит, попробуйте topanswers.xyz
источник
источник
Ответы:
Использование
generate_series()
и ctes. Протестировано на rextester.com :Для случая, когда есть только один столбец, и это a
serial
, я не вижу способа использоватьdefault
. Использовать generate_series просто:clock_timestamp()
, оператор должен быть скорректирован соответствующим образом, как в случае с последовательным регистром.источник
i
он определен первым, вы можете несколько обойтись с более простой версией,INSERT INTO t SELECT * FROM generate_series(1, 10)
которая, в основном, присваивается первому столбцу и дает значения по умолчанию для всех остальных, хотя я не мог найти другие простые способы. Если это просто единичное значение, то вы также можете сначала сделать это с первичным ключом, например, сгенерировав серию значений, которые вы, вероятно, никогда не будете использовать повторно, аINSERT INTO t SELECT * FROM generate_series(1000000, 1000000+10)
затем изменив числа вручную после этого.t
. Правильно ли я использовал SQL Fiddle?select * from t
после оператора CTE.