यहां संक्षिप्त संस्करण यह है कि अयोग्य lastval
. का उपयोग करना एक बुरा विचार है। ट्रिगर, नियम आदि समस्याएं पैदा कर सकते हैं।
आपको lastval
. से बचना चाहिए पूरी तरह से। उपयोग करें:
BEGIN;
INSERT INTO "users" ("email", "first_name", "last_name", "password", "objectstate_id", "activate_rid")
VALUES ('[email protected]', 'Xpress', 'Care', 'f9fecdd84ee071806423adf30d6d6ff04e1a0a2c6688f2c057ddbab1d6b55d02', 4, 'EMQHTMMvViAB5BdYj0E6')
RETURNING id;
जहां id
उत्पन्न कुंजी कॉलम के नाम से होना चाहिए।
यह दृष्टिकोण बहु-मूल्यवान प्रविष्टियों को संभालेगा और INSERT INTO ... SELECT ...
सही ढंग से, और ट्रिगर्स को छूने वाले अनुक्रमों के साथ कोई समस्या नहीं होगी।
यदि आपको फ़ंक्शन-कॉल आधारित दृष्टिकोण का उपयोग करना चाहिए, तो कम से कम currval('tablename_id_seq')
का उपयोग करें (उपयुक्त अनुक्रम नाम पास करते हुए) lastval
. के बजाय ।