Postgresql

用一個大的插入查詢填充一個應該有 X 行的預設值的表?或者它可以預設以某種方式完成?

  • April 6, 2020

我有一張桌子讓我們說日曆

Table Calendar --> idCal (int) , numberOfFields (int)

每個日曆都分配了許多欄位

Table Field --> idField(int), textField(text), idCal (int) *fk

現在的重點是,每次使用者註冊時,都會為他分配一個日曆,一旦填充了 numberOfFields,我選擇該值並生成類似於以下內容的插入查詢:

INSERT INTO Field (textField, idCal) Values ("","idOfTheGeneratedCalendar") , ("","idOfTheGeneratedCalendar") ...... 

直到我從表 Calendar 中獲得與 numberOfFields 相當的行數。每個 idField(int) 從 0 開始,並且它自動遞增到 numberOfFields 是多少

我為每個使用者這樣做。重點是……有沒有更好的方法來做到這一點,而無需使用 for 迭代建構具有大約 3000 個值的巨大插入查詢?我應該擔心嗎?

你可以使用generate_series()

insert into field (textfield, idcal)
select '', c.idcal
from calendar c
where idcal = 42
 cross join generate_series(1, c.numberoffields) as g(f)

引用自:https://dba.stackexchange.com/questions/264375