यह सुविधा 9.1 पोस्ट करें . में लागू की गई है :
CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
पुराने संस्करणों . के लिए , यहाँ इसके आसपास काम करने के लिए एक फ़ंक्शन है:
CREATE OR REPLACE FUNCTION create_mytable()
RETURNS void
LANGUAGE plpgsql AS
$func$
BEGIN
IF EXISTS (SELECT FROM pg_catalog.pg_tables
WHERE schemaname = 'myschema'
AND tablename = 'mytable') THEN
RAISE NOTICE 'Table myschema.mytable already exists.';
ELSE
CREATE TABLE myschema.mytable (i integer);
END IF;
END
$func$;
कॉल करें:
SELECT create_mytable(); -- call as many times as you want.
नोट:
-
कॉलम
schemaname
औरtablename
pg_tables
. में केस सेंसिटिव हैं। यदि आपCREATE TABLE
. में पहचानकर्ताओं को दोहरा-उद्धृत करते हैं कथन, आपको ठीक उसी वर्तनी का उपयोग करने की आवश्यकता है। यदि आप नहीं करते हैं, तो आपको लोअर-केस स्ट्रिंग्स का उपयोग करने की आवश्यकता है। देखें: -
क्या PostgreSQL कॉलम नाम केस-संवेदी हैं?
-
pg_tables
केवल वास्तविक टेबल है . पहचानकर्ता अभी भी संबंधित वस्तुओं द्वारा कब्जा कर लिया जा सकता है। देखें: -
किसी दिए गए स्कीमा में तालिका मौजूद है या नहीं, इसकी जांच कैसे करें
-
अगर भूमिका निष्पादित इस फ़ंक्शन में उस तालिका को बनाने के लिए आवश्यक विशेषाधिकार नहीं हैं जिसका आप उपयोग करना चाहते हैं
SECURITY DEFINER
समारोह के लिए और इसे स्वामित्व वाली बनाएं आवश्यक विशेषाधिकारों के साथ किसी अन्य भूमिका द्वारा। यह संस्करण काफी सुरक्षित है।