यह वास्तव में थोड़ा भ्रमित करने वाला है क्योंकि अन्य सभी बाधाओं का मूल्यांकन एक बयान स्तर पर किया जाता है, डीएमएल संचालन के दौरान प्रति पंक्ति स्तर पर केवल पीके/अद्वितीय बाधा का मूल्यांकन किया जाता है।
लेकिन आप प्राथमिक कुंजी बाधा को स्थगित करने योग्य घोषित करके उसके आसपास काम कर सकते हैं:
create table tbl_test
(
testkey INTEGER,
constraint pk_tbl_test primary key (testkey) deferrable initially immediate
);
insert into tbl_test values (1), (2);
set constraints all deferred;
update tbl_test
set testkey = testkey +1;
आस्थगित बाधाओं में कुछ ओवरहेड होता है, इसलिए इसे initially immediate
. के रूप में परिभाषित करके इस ओवरहेड को न्यूनतम रखा जाता है। जरूरत पड़ने पर आप बाधा मूल्यांकन को set constraint
. का उपयोग करके स्थगित कर सकते हैं ।
हालांकि असली सवाल यह है कि आपको प्राथमिक कुंजी मान पर ऐसा करने की आवश्यकता क्यों होगी? पीके मूल्यों का कोई मतलब नहीं है, इसलिए सभी मूल्यों को बढ़ाने के लिए यह अनावश्यक लगता है (भले ही डीबीएमएस का उपयोग किया जा रहा हो)