যদিও এই প্রশ্নের বছর পেরিয়ে গেছে, আমি স্প্যানিশ স্পিকারদের জন্য স্পষ্ট করে বলতে চাই, টেস্টগুলি পোস্টগ্রিসে করা হয়েছে:
নিম্নলিখিত সীমাবদ্ধতাটি 1337 রেকর্ডের একটি সারণীতে যুক্ত করা হয়েছে, যেখানে কিটটি প্রাথমিক কী:
**Bloque 1**
ALTER TABLE ele_kitscompletos
ADD CONSTRAINT unique_div_nkit
PRIMARY KEY (div_nkit)
এটি টেবিলের জন্য অগ্রাহ্য নয় এমন একটি ডিফল্ট প্রাথমিক কী তৈরি করে যাতে পরবর্তী আপডেটের চেষ্টা করার সময় আমরা ত্রুটি পাই:
update ele_kitscompletos
set div_nkit = div_nkit + 1;
ত্রুটি: সদৃশ কীটি স্বতন্ত্রতা সীমাবদ্ধতা লঙ্ঘন করে «অনন্য_ডিভ_নিকিট»
পোস্টগ্রিসে, প্রতিটি ROW- র জন্য একটি আপডেটের নির্ধারণ করা পুনরুদ্ধার বা চুক্তি পূরণ করেছে তা যাচাই করে।
চুক্তি অবিলম্বে তৈরি করা হয়েছে এবং প্রতিটি বিবৃতি পৃথকভাবে কার্যকর করা হয়:
ALTER TABLE ele_kitscompletos
ADD CONSTRAINT unique_div_nkit
PRIMARY KEY (div_nkit)
DEFERRABLE INITIALLY IMMEDIATE
**Bloque 2**
BEGIN;
UPDATE ele_kitscompletos set div_nkit = div_nkit + 1;
INSERT INTO public.ele_kitscompletos(div_nkit, otro_campo)
VALUES
(1338, '888150502');
COMMIT;
অনুসন্ধানের ঠিক আছে, 0 টি সারি প্রভাবিত হয়েছে (মৃত্যুর সময়: 0 এমএস; মোট সময়: 0 এমএস) অনুসন্ধানের ঠিক আছে, 1328 টি সারি প্রভাবিত হয়েছে (মৃত্যুদণ্ডের সময়: 858 এমএস; মোট সময়: 858 এমএস) ত্রুটি: লেভেল ডুপ্লিক্ট ভায়োলা সীমাবদ্ধ করা হয়েছে «অনন্য_ডিভ_নিকিট ET বিবরণ : ইয়া এক্সিস্টে লা ল্লেভে (Div_nkit) = (1338)।
এখানে এসআই প্রাথমিক কী পরিবর্তন করার অনুমতি দেয় কারণ এটি সম্পূর্ণ প্রথম সম্পূর্ণ বাক্য (1328 সারি) চালায়; তবে এটি লেনদেনের ক্ষেত্রে (বিগইন), চুক্তি কমিট না করে প্রতিটি বাক্য শেষ করার সাথে সাথে অবিলম্বে বৈধতা দেওয়া হয়, সুতরাং INSERT কার্যকর করার সময় ত্রুটি তৈরি করে। অবশেষে আমরা নিম্নলিখিতটি বাতিল চুক্তি তৈরি করেছি:
**Bloque 3**
ALTER TABLE public.ele_edivipol
DROP CONSTRAINT unique_div_nkit RESTRICT;
ALTER TABLE ele_edivipol
ADD CONSTRAINT unique_div_nkit
PRIMARY KEY (div_nkit)
DEFERRABLE INITIALLY DEFERRED
যদি আমরা ** ব্লক 2 ** এর প্রতিটি বিবৃতি পৃথকভাবে প্রতিটি বাক্য কার্যকর করি তবে INSERT এ কোনও ত্রুটি উত্পন্ন হয় না কারণ এটি বৈধতা দেয় না তবে চূড়ান্ত COMMIT কার্যকর করা হয় যেখানে এটি কোনও অসঙ্গতি খুঁজে পায়।
ইংরাজীতে সম্পূর্ণ তথ্যের জন্য আমি আপনাকে লিঙ্কগুলি পরীক্ষা করতে পরামর্শ দিচ্ছি:
গভীরতায় ডেফেরেবল এসকিউএল সীমাবদ্ধতা
অবিচ্ছিন্নভাবে তাত্ক্ষণিকভাবে ডিফেরাবল নয়