ফিল্টারড সূচকগুলির অনেকগুলি সীমাবদ্ধতার মধ্যে এটি অন্য বলে মনে হয়। এটি LIKE
ব্যবহার WHERE column01 LIKE '_____'
করে বাইপাস দেওয়ার চেষ্টাটিও কার্যকর হয় না, একই ত্রুটি বার্তাটি তৈরি করে ( "ভুল যেখানে WHOLE ধারা" " )।
VIEW
সমাধানের পাশাপাশি , অন্য উপায় হ'ল গণিত কলামকে একটি নিয়মিত কলামে রূপান্তর করা এবং একটি CHECK
সীমাবদ্ধতা যুক্ত করা যাতে এটিতে সর্বদা বৈধ ডেটা থাকে:
CREATE TABLE Table01 (column01 nvarchar(100),
column01_length int,
CHECK ( column01_length = len(column01)
AND column01 IS NOT NULL
AND column01_length IS NOT NULL
OR column01 IS NULL
AND column01_length IS NULL )
) ;
CREATE UNIQUE INDEX UIX_01 ON Table01 (column01) WHERE column01_length >= 5 ;
Rextester.com এ পরীক্ষিত
স্বাভাবিকভাবেই, এর অর্থ হ'ল column01_length
প্রতিবার আপনি অঙ্কিত হওয়া column01
(সন্নিবেশ এবং আপডেটের ক্ষেত্রে) যথাযথ দৈর্ঘ্যের সাথে স্পষ্টভাবে পপুলেশন করা দরকার । এটি জটিল হতে পারে, কারণ আপনারা এটি নিশ্চিত করে নেওয়া দরকার যে টি-এসকিউএল LEN()
ফাংশন যেমন করে তার দৈর্ঘ্য একইভাবে গণনা করা হয় । বিশেষত, পিছনের জায়গাগুলি উপেক্ষা করা দরকার, যা ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে লেখা বিভিন্ন প্রোগ্রামিং ভাষায় ডিফল্টরূপে দৈর্ঘ্যটি কীভাবে গণনা করা যায় তা অগত্যা নয় the প্রথম স্থানে পার্থক্য সম্পর্কে সচেতন।
কলামটির সঠিক মান সরবরাহ করতে একটি বিকল্প হ'ল INSERT/UPDATE
ট্রিগার 1 হবে, সুতরাং এটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে গণিত হিসাবে প্রদর্শিত হবে।
1 সীমাবদ্ধতার তুলনায় ট্রিগারগুলিতে যেমন ব্যাখ্যা করা হয়েছে , আপনার এটির জন্য একটি ইনস্টল অফ ট্রিগার ব্যবহার করতে হবে। একটি আফ্রিটার ট্রিগার কেবল কখনও কার্যকর করা হবে না, কারণ অনুপস্থিত দৈর্ঘ্য চেক সীমাবদ্ধতা ব্যর্থ করবে এবং ফলস্বরূপ, ট্রিগারটি চলমান থেকে আটকাবে। ইনস্টল অফ ট্রিগারগুলির অবশ্য নিজস্ব বিধিনিষেধ রয়েছে ( দ্রুত পর্যালোচনার জন্য ডিএমএল ট্রিগার পরিকল্পনার নির্দেশিকা দেখুন )।