我們想使用插入命令與特定的列中指定官方文檔。這是唯一的要求
️磚SQL倉庫版本2022.35或更高版本
️磚運行時11.2及以上
和行為應該如下
如果該命令省略了一個專欄,磚SQL分配相應的默認值。
如果目標表模式沒有定義任何默認值插入列,磚SQL分配NULL如果列可以為空。否則,磚SQL提出了一個錯誤。
我們使用SQL倉庫2023.15(> 2022.35),我猜我們的磚運行時是12.2。因此我們的解釋的文檔來看,答案是肯定的,但它不是。為什麼它不工作?曆史上它不支持Delta-tables,但根據文檔,這應該不是一個問題
如果不存在prod_gold.forecaster創建表。測試(col_1字符串,col_2字符串);插入prod_gold.forecaster。測試(col_1)值(“測試”)
你好@Mattias P,
在上麵你的聲明中,create table命令應該包含默認值,
但是當我嚐試它,它沒有說違約是不允許的。
最初這是不支持與δ,但是當這個特性介紹了δ協議我們不得不在TBLPROPERTIES添加它。注意——這是隻有三角洲,其他協議沒有任何TBLPROPERTIES工作。醫生將被更新,以反映這一點。
創建表(表
col1字符串非空默認的“abc”
)
使用δ
TBLPROPERTIES (“delta.feature。allowColumnDefaults ' = '支持')
希望這個有幫助。
感謝和問候,
Nandini
謝謝你幫助我們。你確定嗎?文檔應該說似乎仍是可能的
“如果目標表模式沒有定義任何默認值插入列,磚SQL分配NULL如果列可以為空”
,一切都是空的,除非你顯式地設置不空嗎?
https://docs.m.eheci.com/sql/language-manual/sql-ref-syntax-ddl-create-table-using.html
我認為重要的是要清楚不同的數據庫係統處理這不同。例如在PostgreSQL
每一列沒有出現在顯式或隱式列列表將裝滿一個默認值,其宣稱默認值或零如果沒有。
在MySQL它變成了隱式或顯式的默認值(非空)
如果嚴格SQL模式未啟用,任何列沒有明確給定一個值被設置為默認(顯式的或隱式的)價值。