जब आप एक नई तालिका बनाते हैं hook_schema()
, तो क्या उस तालिका को भी जोड़ा जाना चाहिए hook_update_N()
? या वहाँ कुछ चाल है, या कुछ मुझे याद है, databae- अद्यतन स्वचालित रूप से तालिकाओं को जोड़ने के लिए है?
Hook_update_N () के प्रलेखन में नई तालिकाओं को शुरू करने के बारे में कुछ भी नहीं बताया गया है, जबकि प्रलेखन काhook_schema()
कहना है:
इस हुक द्वारा घोषित तालिकाएँ स्वचालित रूप से बनाई जाएंगी जब मॉड्यूल को पहली बार सक्षम किया जाता है , और मॉड्यूल की स्थापना रद्द होने पर हटा दिया जाता है।
(हाईलाइट मेरी है)
और यदि हां, तो दोनों हुक_update_N () और hook_schema () में नई तालिका के लिए स्कीमा परिभाषाओं की नकल करने से कैसे बचें। केवल स्कीमा का जिक्र इस प्रकार है:
function hook_update_N(&$sandbox) {
$schema = hook_schema();
$name = "foo";
$table = $schema["foo"];
db_create_table($name, $table);
}
काम करने लगता है, लेकिन अगर उपयोगकर्ता फिर से अपडेट चलाता है और दो या अधिक हुक_अपडेट_ () एस चलाता है, तो फिर से टेबल बदलने पर विफल हो जाएगा। सब के बाद: पहला हुक_अपडेट_ फिर पहले से ही सही डेटाबेस स्थापित करेगा और दूसरा हुक_अपडेट_एम () पहले से अद्यतित स्तंभों को जोड़ने / बदलने / बदलने की कोशिश करेगा।
आप इस के साथ कैसे पेश आएंगे?