Postgresql
可變函式和復合類型
我有這樣的功能:
update_stuff_variadic( VARIADIC _stuff_array stuff[] )
我知道這種語法需要 _stuff_array 來匹配東西的列結構
$$ $$桌子。 是否可以在數組中設置所需元素的類型,而不是隱式匹配 stuff 表的每一列?
偽:
update_stuff_variadic( VARIADIC _stuff_array array['comment'::BIGINT, 'created_by'::TEXT] )
這樣,傳遞給函式的數組就不必容納諸如序列 ID 欄位之類的列,或諸如時間戳之類的自動填充欄位。
您需要一個已註冊的複合類型(行類型)。
每當您創建表或視圖時,都會隱式註冊複合類型。
您使用 . 顯式註冊複合類型
CREATE TYPE
。所以你可以:
CREATE TYPE my_partial_stuff AS (comment bigint, created_by text); CREATE OR REPLACE FUNCTION update_stuff_variadic( VARIADIC _stuff_array my_partial_stuff[] ) ...
然後呼叫函式:
SELECT update_stuff_variadic ('(8,foo)', '(9,bar)');