的視圖更新在一個多到一的關係兩個表我有兩個表:foos
和bars
,並且在它們之間存在一個多到一的關係:每個foo
可以有許多bars
。我也有一個觀點foobars
,加入這兩個表(它的查詢就像select foo.*, bar.id from foos, bars where bar.foo_id=foo.id
)。通過PostgreSQL中
編輯:如果您說foo
s和bar
s之間存在多對多關係,那麼您就不會錯。然而,bar
僅僅是一個標籤(實際上它是一個尺寸),並且僅由它的名字組成。表bars
與鏈接表具有相同的作用。
我有一個插入到foobars
的規則,以便將「foo」部分作爲新行插入到foos
中,並且包含由逗號分隔的幾個條形ID的「bar」部分被拆分,並且對於每個這樣的部分,它與適當的foo
之間的鏈接被創建(我使用一個過程來做到這一點)。
這對插入很有用。但是,當涉及到更新整個事情時,我有一個問題。該規則的foo
部分很簡單。但是,我不知道如何處理多個bar
的部分。當我在規則中嘗試執行類似DELETE FROM bars WHERE foo_id=new.foo_id
的操作時,我將從表bars
中刪除所有內容。
我在做什麼錯?有沒有辦法達到我需要的?最後,我認爲整個事情是合理的嗎?
(我做的這個觀點過於複雜的事情,因爲我得到的數據是在「foo
及其所有bar
的」的形式,但用戶必須看到的只是foobars
)
不應該將顯式和隱式內部聯接精確地針對相同的查詢計劃進行優化嗎?至少在Postgres中會發生這種情況。我編輯了這篇文章,解釋爲什麼我不使用鏈接表。 – 2008-10-02 10:30:11