Postgresql
用一個大的插入查詢填充一個應該有 X 行的預設值的表?或者它可以預設以某種方式完成?
我有一張桌子讓我們說日曆
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)