हम जानते हैं, वहाँ PostgreSQL में इसी समग्र प्रकार के किसी भी रिकॉर्ड कास्ट करने के लिए एक आसान तरीका इस तरह है, के लिए रिकॉर्ड डाली:PostgreSQL समग्र प्रकार
CREATE TYPE test.t_test AS (
mytext text,
myint integer
);
SELECT ('text', 10)::test.t_test; -- will succeed
लेकिन इस के साथ एक असुविधा है कि है - अगर लक्ष्य प्रकार संशोधित किया गया है (उदाहरण के लिए एक क्षेत्र में जोड़ा जाता है) - डाली तो टूट जाएगा :(
ALTER TYPE test.t_test ADD ATTRIBUTE mychar char(1);
SELECT ('text', 10)::test.t_test; -- will fail
इस मामले में मदद मिल सकती लिए CREATE CAST
लेकिन मैं एक कास्टिंग कार्य करने के लिए एक तर्क के रूप RECORD
की तरह एक छद्म प्रकार पारित नहीं कर सकते हैं। और न तो टाइप-विरासत और न ही समग्र टाइप ई डिफ़ॉल्ट (तालिका की तरह) या तो काम करते हैं। क्या यहां संगतता प्राप्त करने का कोई और तरीका है?
बेशक यह CREATE FUNCTION test.to_t_test(t text, i integer, c char DEFAULT '') RETURNS test.t_test
तरह स्पष्ट कच्चे कार्यों का उपयोग करने के लिए और उसके बाद करना
SELECT test.to_t_test('text', 10) -- OK
SELECT test.to_t_test('text', 10, '1') -- OK
तो डिफ़ॉल्ट पैरामीटर मान का उपयोग संभव है। लेकिन इस तरह न तो स्पष्ट और न ही आरामदायक है।