मैं एक Oracle डाटाबेस, और कई नहीं अशक्त कॉलम युक्त तालिका है, सभी मूलभूत मूल्यों के साथ।सम्मिलित डिफ़ॉल्ट मान जब अशक्त डाला जाता है
मैं किसी भी डेटा मैं सम्मिलित करना चाहते हैं के लिए एक डालने कथन का उपयोग करना चाहते हैं, और अगर मान डाला nulls हैं या नहीं की जाँच करने के लिए परेशान नहीं है।
वहाँ किसी भी तरह से पीछे हटना स्तंभ डिफ़ॉल्ट मान पर जब अशक्त डाला जाता है है?
<?php
if (!empty($values['not_null_column_with_default_value'])) {
$insert = "
INSERT INTO schema.my_table
(pk_column, other_column, not_null_column_with_default_value)
VALUES
(:pk_column,:other_column,:not_null_column_with_default_value)
";
} else {
$insert = "
INSERT INTO schema.my_table
(pk_column, other_column)
VALUES
(:pk_column,:other_column)
";
}
तो, मैं पूरी तरह से कॉलम छोड़ है, या मैं त्रुटि "नहीं अशक्त स्तंभ के लिए डालने की कोशिश कर रहा अशक्त" होगा:
मैं इस कोड है। बेशक मेरे पास कई शून्य कॉलम हैं, इसलिए कोड डालने वाला कथन बहुत अपठनीय, बदसूरत है, और मुझे बस इसे इस तरह पसंद नहीं है।
मैं, एक बयान करना चाहते हैं के लिए कुछ इसी तरह:
INSERT INTO schema.my_table
(pk_column, other_column, not_null_column_with_default_value)
VALUES
(:pk_column,:other_column, NVL(:not_null_column_with_default_value, DEFAULT));
कि निश्चित रूप से एक काल्पनिक प्रश्न है। क्या आप ओरेकल डीबीएमएस के साथ उस लक्ष्य को प्राप्त करने के किसी भी तरीके से जानते हैं?
संपादित:
आप सभी अपने जवाब के लिए धन्यवाद। यह बताता है कि जो कुछ मैं चाहता था उसे हासिल करने के लिए कोई "मानक" तरीका नहीं है, इसलिए मैंने आईएमओ को सबसे अच्छा जवाब स्वीकार कर लिया: मुझे स्मार्ट होने के लिए रोकना चाहिए और स्वचालित रूप से निर्मित बयानों के माध्यम से शून्य मूल्यों को छोड़ना चाहिए।
नहीं वास्तव में मैं देखना चाहता है, लेकिन कोई बेहतर विकल्प चाहते हैं।
कारण है कि आप शब्द "डिफ़ॉल्ट" के बदले "not_null_column_with_default_value" कॉलम का डिफ़ॉल्ट मान में प्रवेश नहीं करते हो जाएगा "hypothetical क्वेरी" के अंदर? – palindrom
क्योंकि मुझे नहीं पता कि डालने के समय डिफ़ॉल्ट मूल्य क्या है। लेकिन जैसा कि @ विन्सेंट मालग्रैट ने सुझाव दिया है कि मैं उस फॉर्म को ला सकता हूं ALL_TAB_COLUMNS – SWilk