যেমনটি ডাটাবেসসেমিমা_পিগ এসকিউএল :: চেঞ্জফিল্ড এবং ডিবি_চেঞ্জ_ফিল্ডে () রিপোর্ট করা হয়েছে :
গুরুত্বপূর্ণ দ্রষ্টব্য: ডাটাবেস বহনযোগ্যতা বজায় রাখতে, আপনাকে পরিবর্তিত ক্ষেত্রটি ব্যবহার করছে এমন সমস্ত সূচক এবং প্রাথমিক কীগুলি স্পষ্টতই পুনরায় তৈরি করতে হবে।
এর অর্থ হ'ল ডিবি_চেঞ্জ_ফিল্ড () কল করার আগে আপনাকে সমস্ত আক্রান্ত কী এবং সূচকগুলি db_rod_ {প্রাথমিক_কি, অনন্য_কি, সূচক} () সহ ফেলে দিতে হবে। কীগুলি এবং সূচকগুলি পুনরায় তৈরি করতে dচ্ছিক $ new_keys যুক্তি হিসাবে মূল সংজ্ঞাটি সরাসরি db_change_field () এ পাস করুন।
উদাহরণস্বরূপ, ধরুন আপনার কাছে রয়েছে:
$schema['foo'] = array(
'fields' => array(
'bar' => array('type' => 'int', 'not null' => TRUE)
),
'primary key' => array('bar')
);
এবং আপনি foo.bar পরিবর্তন করতে চান টাইপ সিরিয়াল, এটিকে প্রাথমিক কী হিসাবে রেখে। সঠিক ক্রমটি হ'ল:
db_drop_primary_key($ret, 'foo');
db_change_field($ret, 'foo', 'bar', 'bar',
array('type' => 'serial', 'not null' => TRUE),
array('primary key' => array('bar'))
);
অনুরূপ কোড দ্রুপাল 7 এর জন্য রিপোর্ট করা হয়েছে।
মনে রাখবেন যে, আমার অভিজ্ঞতার জন্য আপনি একটি প্রাথমিক কী মুছে ফেলতে পারবেন না যা সিরিয়াল ক্ষেত্র ব্যবহার করে। ড্রুপাল On-এ, আমি চেষ্টা করে যাবার চেষ্টা করে সমস্ত সময় ত্রুটি পেয়েছি; দ্রুপাল on-তে আমি চেষ্টা করিনি।
এর বাইরে, ডাটাবেস সূচীগুলির সাথে আপনার আর কোনও সমস্যা থাকতে পারে তা আমি জানি না।
অন্য একটি মডিউল থেকে তৈরি করা একটি ডাটাবেস টেবিলের সাথে একটি সূচি যুক্ত করার বিষয়ে, আমি এটি করার পরামর্শ দেব না, কারণ:
- একটি মডিউল পরিবর্তিত হচ্ছে এমন ক্ষেত্রের জন্য কোনও সূচক ফেলে না, যদি মডিউল নিজেই সেই সূচকটি তৈরি না করে। মডিউলটির পক্ষে এটি করা সম্ভব হবে না কারণ এটি সূচকের নাম জানে না।
- অন্য মডিউল দ্বারা নির্মিত একটি ডাটাবেস টেবিলটি পরিবর্তন করা কখনই ভাল ধারণা নয়, এমনকি মডিউলটি একটি মূল মডিউল। যদি অন্য মডিউল থাকে যা একই টেবিলটি পরিবর্তন করে, মডিউলগুলি কীভাবে একে অপরের সাথে বিরোধগুলি পরিচালনা করতে পারে, বা পরিবর্তনের সাহায্যে মূল মডিউলটি তার নিজস্ব ডাটাবেসে প্রয়োগ করতে পারে?
যদি ডেটাবেস টেবিলটি অন্য মডিউল (একটি মূল মডিউল বা তৃতীয় পক্ষের মডিউল) থেকে তৈরি করা হচ্ছে, আমি মডিউলটির জন্য একটি বৈশিষ্ট্য অনুরোধ খোলার পরামর্শ দেব, একটি নতুন সূচক ব্যবহারের জন্য ব্যবহারের কেস সরবরাহ করবে; যদি কোনও কার্য সম্পাদনের সমস্যা থাকে তবে একটি সূচি যোগ করা করাই পছন্দসই জিনিস হতে পারে।
আপনি যদি অন্য কোনও মডিউল থেকে নিজের সাইটে তৈরি টেবিলটিতে একটি সূচক যুক্ত করতে চলেছেন তবে মডিউলটি আপডেট হওয়ার পরে প্রতিবার আপনার নিজস্ব কাস্টম মডিউলে আপনাকে যা করতে হবে তা পরিবর্তন করতে এবং আপনার নিজের সাইটে ইনস্টল করার আগে প্রস্তুত থাকুন ।
অতিরিক্ত কাজটি আপনার করা পারফরম্যান্সের পক্ষে মূল্যবান কিনা তা আপনিই স্থির করতে পারবেন। ব্যক্তিগতভাবে, যদিও আমি এটি মূল্যবান বলে মনে করি না।