在我們開發系統的過程中,會對table增加欄位或是刪除欄位,為了讓開發測試過程平順,我們可以使用一些技巧來應對.
假設我們有一個 schema 放基本資料,隨著系統演進又增加一個 schmea,用來放新的table.
能不能加兩個欄位,然後那個日期欄位不要.在發展的過程中,增加減少欄位時常見到.這時候我們可以應用schema與search_path.
我們可以透過切換 search_path , 來對兩個不同版本的table做查詢
wildcard的使用,讓我們在開發階段方便.但是有些人會很堅持的不能用,然後會在那裡跟你盧小小一堆的,因為那是麻煩到你不是他,當他自己違反他的說詞時,會說那是隨機應變.在這種情況下,沒必要去跟那些人講道理,他們是不會接受的,典型的有想法,沒做法.這時候我們就要有專業的處理方式.遠山不轉,流水可轉.來變通一下.先來看指定欄位時的情況.
可以看到PostgreSQL 很貼心的告訴我們,沒這個欄位.
反向的情況,我就省略了.
可以看到我們使用了to_json()函數,裡面直接使用了合演片,當我們設定不同的search_path,就會使用不同結構的合演片,轉變為json.
後續我們使用 ->> 運算子取出資料時,沒有對應到的key,不會回報錯誤,會得到null.這樣就避免了,開發階段發生錯誤,會讓過程較為平順.
感謝 初川みなみ, 坂道みる (現改名為 miru), 楓カレン (楓哥之前改叫田中レモン 現在又改回 楓カレン 人美任性), 桜空もも, 伊藤舞雪, 楪カレン.
PostgreSQL有很多彈性靈活的功能,我們可以多加利用.避免無謂的爭議,讓世界更和平.