जैसा बताया गया है यहां
, पोस्टग्रेज वर्तमान में आपको CREATE FUNCTION
. का उपयोग करने की अनुमति नहीं देता है एक साथ:
इसका एक समाधान यह सुनिश्चित करना है कि कोई भी दो लेन-देन CREATE FUNCTION
करने का प्रयास न करें। उसी समय।
आप posgres सलाहकार ताले का उपयोग कर सकते हैं उसके लिए।
एडवाइजरी लॉक का अच्छा परिचय यहां पाया जा सकता है:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/
उदाहरण के लिए, आप इसका उपयोग कर सकते हैं:
BEGIN; -- start of transaction
SELECT pg_advisory_xact_lock(2142616474639426746); -- random 64-bit signed ('bigint') lock number
CREATE OR REPLACE FUNCTION myfunction ...
COMMIT;
यह एक लेन-देन-स्तर अनन्य सलाहकार लॉक लेता है, ताकि कोई भी दो समवर्ती लेनदेन एक ही समय में फ़ंक्शन बना सकें। लेन-देन के अंत में, लॉक स्वचालित रूप से जारी हो जाता है।