পরিচয় মান পুনরায় সেট করুন


16

আমার কাছে একটি পরিচয় কলাম সহ একটি টেবিল রয়েছে। বিকাশ করার সময় আমি সময়ে সময়ে সারিগুলি মুছে ফেলি এবং সেগুলি আবার যুক্ত করি। তবে পরিচয় মানগুলি সর্বদা বাড়তে থাকে এবং আমি আবার যুক্ত করার পরে 1 থেকে শুরু হয় না। এখন আমার আইডি 68 -> 92 থেকে যায় এবং এটি আমার কোডটি ক্র্যাশ করে।

আমি কীভাবে পরিচয় মান পুনরায় সেট করব?


আমি আমার কোডটি পরিচয়ের মানগুলি অনুপস্থিত করার জন্য আরও স্থিতিশীল করে তুলব। একটি পরিচয় কলাম সংলগ্ন সংখ্যায়ন গ্যারান্টি দেয় না, আর হবে শেষ পর্যন্ত এরকম
Trubs

উত্তর:


29

আপনি পরিচয় মানটি পুনরায় সেট করতে পারেন

DBCC CHECKIDENT('tableName', RESEED, 0)

সুতরাং পরের বার আপনি টেবিলনেমে প্রবেশ করানোর সময় প্রবেশের পরিচয় মানটি 1 হবে value

আপনি যখন টেবিল থেকে সারিগুলি মুছবেন , এটি পরিচয় মানটি পুনরায় সেট করবে না, তবে এটি এটি বাড়িয়ে রাখবে। ঠিক যেমনটি আপনার ক্ষেত্রে ঘটেছিল ঠিক তেমন।

এখন আপনি যখন টেবিলটি কেটে ফেলবেন , এটি পরিচয় মানটি টেবিলের মূল বীজ মানেরটিতে পুনরায় সেট করবে।

এখানে দেখুন: এসকিউএল সার্ভার - বিশদ উদাহরণ এবং কাটা কাটা এবং মোছার মধ্যে পার্থক্য সম্পর্কে কিছু ভাল ব্যাখ্যাের জন্য মুছুন, ট্রানসেট এবং রিসিড পরিচয়


22

আত্মীয় আপনাকে দেখিয়েছে কীভাবে আপনি পরিচয় মানটি পুনরায় সেট করতে পারেন তবে যখন আপনি সত্যিকার অর্থে সমস্ত ডেটা সরিয়ে ফেলেন তখন কোনও বিকাশের পরিবেশের বাইরে আপনি কেন এটি করার দরকার হয়?

আমি আশা করি আপনি উত্পাদনের সময় আইডেন্টিটি মানগুলির একটি সামঞ্জস্যপূর্ণ ধারাবাহিকতা বজায় রাখতে চাইছেন না। এবং আমি আশা করি আপনি সত্যিকারের পরিচয় মানগুলি হার্ড-কোডে আপনার কোডটি লিখছেন না। এগুলি যদি অর্থবহ আইডি মান হয় তবে আপনার পরিচয় সম্পত্তিটি ব্যবহার বন্ধ করা উচিত।

কয়েকটি জিনিস রয়েছে যা এটি হতে বাধা দেবে:

  • যদি কোনও লেনদেনের সময় কোনও পরিচয় মান নির্ধারিত হয়, এবং লেনদেনটি আবার ঘুরিয়ে দেওয়া হয়, মানটি "ফেরত দেওয়া হয় না" এবং পরবর্তী মানটি কখনও ব্যবহৃত না হয় এমনই হবে + 1।
  • যদি কোনও সারি পরে মুছে ফেলা হয়, শনাক্তকরণগুলি পূরণ করতে পরিচয়টি আর কখনও ফিরে আসে না।
  • এসকিউএল সার্ভার ২০১২-এ একটি সক্রিয় বাগ রয়েছে যা এসকিউএল সার্ভার ২০১৪ সাল পর্যন্ত ঠিক করা হবে না (যদি আপনি কোনও অনিবন্ধিত এবং খুব ব্যয়বহুল ট্রেস পতাকা ব্যবহার না করেন) যার মাধ্যমে পুনরায় চালু করা আপনার পরিচয় কলাম থেকে ১০০০ পর্যন্ত মান বাতিল করে দেবে বলে মনে হচ্ছে । কানেক্ট-এ থাকা বাগ পরামর্শ দেয় যে এটি উপলভ্যতা গোষ্ঠীগুলির সাথে জড়িত ব্যর্থতার ঘটনাগুলিতে সীমাবদ্ধ তবে আমি আপনাকে নিশ্চিত করতে পারি যে বাগটি এর চেয়ে অনেক বেশি বিস্তৃত।

সংক্ষেপে, আপনি যদি ফাঁকাগুলির বিষয়ে চিন্তা করেন বা এই মানগুলি নির্দিষ্ট অর্থ দিতে চান তবে পরিচয় ব্যবহার বন্ধ করুন। টেবিলটি ড্রপ এবং পুনরায় তৈরি করুন এবং যখন আপনাকে মানগুলি মুছতে এবং পুনরায় জনবহুল করা দরকার হয় হয় একটি আপডেট সম্পাদন করুন বা সেই কলামটির জন্য হার্ড-কোডিং মান সহ একটি সন্নিবেশ সম্পাদন করুন।

অন্যদিকে, প্রাথমিক কী এবং পরিচয় একই জিনিস নয়। আপনি একটি স্পষ্টরূপে এটিরূপে সংজ্ঞা না দিয়ে পরিচয় কলাম কোনও প্রাথমিক কী নয় এবং আপনার অবশ্যই একটি প্রাথমিক কী থাকতে পারে যা কোনও পরিচয় কলাম নয়।


-4

আপনার যদি কেবল সর্বশেষ সারিগুলি অপসারণ করতে হয় যা একটি পরিচয় ক্ষেত্রের বর্ধমান মান অনুসরণ করে না, তবে একটি সহজ এবং নিরাপদ উপায় রয়েছে:

  1. প্রথমে সর্বশেষ রেকর্ডগুলি মুছে ফেলুন যা 'লাফিয়ে' গেছে
  2. আপনার পরিচয় ক্ষেত্রের ডেটা ধরণের পরিবর্তন করুন (int থেকে বিগিন্ট বা বিপরীতে)
  3. টেবিল সংরক্ষণ করুন
  4. একটি নতুন রেকর্ড যুক্ত করুন, এবং এটি সর্বাধিক মান +1 এর সংখ্যা নির্ধারণ করে check
  5. আপনার প্রয়োজনের জন্য সুবিধাজনক হিসাবে আপনার পরিচয় ক্ষেত্রের ডেটা ধরণের প্রতিস্থাপন করুন

এবং আপনি সম্পন্ন হয়েছে।


3
"টেবিল সংরক্ষণ করুন" এসকিউএল সার্ভারের জন্য কোনও অর্থবহ বিবৃতি নয়। ডেটার ধরন পরিবর্তন করা 100 টিরও কম সারি দিয়ে তুচ্ছ হতে পারে তবে বড় টেবিলের জন্য এটি খুব ব্যয়বহুল প্রমাণিত হতে পারে ।
মাইকেল গ্রিন

2
আমি ধরে নিলাম আপনার এসএসএমএস বলতে চাইছেন। এটি একটি নতুন টেবিল তৈরি করবে, এতে সমস্ত সারি অনুলিপি করবে, পুরানো টেবিলটি ফেলে দেবে এবং নতুনটির নাম বদলে দেবে। এবং ডেটাটাইপ পিছনে টগল করতে আপনার এটি দুটিবার করা দরকার। এটি বাদাম ফাটানোর জন্য স্লেজহ্যামার ব্যবহার করছে।
মার্টিন স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.