Oracle Sequence তৈরির সঠিক উপায়: টেবিলের সর্বোচ্চ ID থেকে শুরু করা
Oracle ডাটাবেসে যখন আমরা কোনো টেবিলে নতুন রেকর্ড যোগ করার সময় ইউনিক আইডি অটো জেনারেট করতে চাই, তখন সাধারণত Sequence ব্যবহার করা হয়। তবে অনেক সময় টেবিলে আগে থেকেই ডাটা থাকায় নতুন সিকোয়েন্স তৈরি করার সময় শুরু করার মানটা হতে হবে টেবিলের সর্বোচ্চ আইডির পরবর্তী সংখ্যা।
এখানে দেখানো হবে কিভাবে PL/SQL ব্লক ব্যবহার করে টেবিলের সর্বোচ্চ SAMPLE_ID
বের করে সেই মান থেকে সিকোয়েন্স তৈরি করবেন।
সমস্যা
ধরা যাক, আপনার টেবিলের নাম XXPWC.PWC_OM_TEST_REQUEST_DEPT_SEND
এবং এতে একটি কলাম আছে SAMPLE_ID
যেখানে ইউনিক আইডি রাখা হয়।
আপনি একটি সিকোয়েন্স তৈরি করতে চান যা সর্বোচ্চ SAMPLE_ID
থেকে ১ বাড়িয়ে শুরু হবে।
সমাধান
আমরা নিচের স্টেপগুলো অনুসরণ করব:
-
টেবিল থেকে
MAX(SAMPLE_ID)
বের করব -
পুরানো সিকোয়েন্স থাকলে সেটি ড্রপ করব
-
নতুন সিকোয়েন্স তৈরি করব যা
MAX(SAMPLE_ID) + 1
থেকে শুরু হবে
PL/SQL ব্লক কোড
কিভাবে ব্যবহার করবেন?
-
উপরের কোডটি Oracle SQL Developer বা আপনার পছন্দের SQL টুলে রান করুন।
-
এটি পুরানো সিকোয়েন্স থাকলে তা ড্রপ করবে এবং নতুন সিকোয়েন্স তৈরি করবে।
-
নতুন সিকোয়েন্স নাম হবে
SAMPLE_ID_SEQ
এবং এটি সর্বোচ্চSAMPLE_ID
থেকে পরবর্তী মান দিয়ে শুরু হবে।
কেন এটি প্রয়োজন?
-
অনেক সময় ডাটাবেস মাইগ্রেশন বা ম্যানুয়াল ডাটা ইনসার্টের কারণে টেবিলে ইতিমধ্যেই ডাটা থাকে।
-
সিকোয়েন্স যদি সর্বদা 1 থেকে শুরু করে, তাহলে নতুন ইনসার্টে ডুপ্লিকেট কী এরর হবে।
-
তাই
MAX(ID) + 1
থেকে সিকোয়েন্স শুরু করা জরুরি।
অতিরিক্ত টিপস
-
যদি Multi-user environment এ concurrency issue থেকে বাঁচতে চান, তাহলে
Sequence
ব্যবহার করাই সেরা উপায়। -
সরাসরি
MAX(ID)+1
ব্যবহার না করে সিকোয়েন্স দিয়ে অটো ইনক্রিমেন্ট করুন। -
আপনার ডাটাবেসে সিকোয়েন্স তৈরি ও ড্রপ করার পারমিশন থাকতে হবে।
No comments:
Post a Comment
I am Safiqul Islam Tuhin