इस बड़े पैमाने पर सरलीकृत फ़ॉर्म को आज़माएं:
CREATE OR REPLACE FUNCTION somefunc()
RETURNS void AS
$func$
DECLARE
addresstablename text := 'address_history_' || to_char(now(), 'FMDD_MM_YYYY');
BEGIN
EXECUTE
'CREATE TABLE ' || addresstablename || '() INHERITS (address_all)';
EXECUTE
'INSERT INTO ' || addresstablename || '
SELECT *
FROM address_history
WHERE address_timestamp >= $1'
USING date_trunc('hour', now() - interval '7 days');
END
$func$ LANGUAGE plpgsql;
प्रमुख बिंदु:
-
आप घोषणा के समय plpgsql में वैरिएबल असाइन कर सकते हैं। कोड को सरल करता है।
-
to_char()का उपयोग करें कोड>
अपनी तिथि को प्रारूपित करने के लिए। बहुत आसान। -
अब ()
औरCURRENT_TIMESTAMP
वही करें। -
'now()'
quote का उद्धरण न दें ,अभी ()
का उपयोग करें (बिना उद्धरण के) यदि आप वर्तमान टाइमस्टैम्प चाहते हैं। -
USING<का इस्तेमाल करें /कोड>
, इसलिए आपकोEXECUTE
. के साथ क्लॉजटाइमस्टैम्प
. को कनवर्ट करने की आवश्यकता नहीं है करने के लिएपाठ
और पीछे - संभवतः उद्धरण . में चल रहा है आपके जैसे मुद्दे। तेज़, आसान, सुरक्षित। -
LANGUAGE plpgsql
में ,plpgsql
एक कीवर्ड है और इसे उद्धृत नहीं किया जाना चाहिए। -
आप यह जांचना चाह सकते हैं कि क्या तालिका पहले से मौजूद है
CREATE तालिका यदि मौजूद नहीं है तो
, PostgreSQL 9.1 से उपलब्ध है।