এসকিউএল-তে কীভাবে পূর্ণসংখ্যা কলামগুলির মান 1 বাড়ানো যায়


92

আমার প্রশ্নগুলি হল

কীভাবে 1 দ্বারা কলামের মান বাড়ানো যায়।

উদাহরণস্বরূপ, ধরুন একটি কলামের IDমানগুলি 1,2,3,4, ..

এখন যখন আমি এই টেবিলটি আপডেট করি তখন IDকলামটি 1 দ্বারা বৃদ্ধি করা উচিত

এখন IDহয়ে যাবে 2,3,4,5, ..


আপনার সম্পর্কে কোন নমুনা চান? 1 সারির জন্য 1 দ্বারা বর্ধমান কলামের মান? সব সারি? আপনার টেবিল কোনটি (ডিডিএল)? তথ্য নমুনা (ডিএমএল)?
কুইকিনেট

উত্তর:


155

সারণীতে প্রতিটি মানের সাথে একটি যুক্ত করতে ...

UPDATE myTable
SET ID = ID + 1

একটি নতুন মান তৈরি করতে, পূর্বের সর্বোচ্চ (সাধারণত) আরও একবার, আইডেন্টিটি সহ একটি কলাম ব্যবহার করুন


39
দয়া করে মনে রাখবেন যে কলামটি শূন্য হলে এটি কাজ করে না । নূতন কলামগুলি বর্ধিত হওয়ার পরেও নীল থাকে। এটি সমাধানের জন্য, ISNULLবিবৃতিটি এর মতো ব্যবহার করুন : UPDATE myTable SET ID = ISNULL(ID, 0) + 1( এই উত্তর থেকে নেওয়া )
উয়ে কেইম

SET [Lic] = [Lic] + @dif। দ্রষ্টব্য @ ডিআইডি ভেরিয়েবলটি ইতিবাচক, 0, বা নেতিবাচক
কুইকিনেট

43

আপনি যদি প্রতিটি সারির জন্য স্বয়ংক্রিয়ভাবে উত্পন্ন উত্সের জন্য একটি অনন্য নম্বর পেতে চান, এটি নীলের উত্তর অনুসারে পরিচয়।

প্রতিবার আপনি টেবিল আপডেট করলে আপনি মানগুলি বাড়িয়ে দিতে চান (যেমন তারা কী নয়):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>


1

আপনি এটি করতে পারেন IDENTITYযা ব্যবহার করতে পারেন do

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

আপনি যখন আপনার প্রথম রেকর্ড সন্নিবেশ করবেন তখন আপনি Id1 এর একটি পাবেন ।


1

ওরাকল-এ কোডটি কিছুটা জটিল।

সিকোয়েন্স অবজেক্টের সাথে আপনাকে একটি অটো-ইনক্রিমেন্ট ফিল্ড তৈরি করতে হবে (এই বস্তুটি একটি সংখ্যা ক্রম উত্পন্ন করে)।

নিম্নলিখিত ক্রিয়েট সিকোয়েন্স সিনট্যাক্স ব্যবহার করুন:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

উপরের কোডটি seq_Press নামক একটি সিকোয়েন্স অবজেক্ট তৈরি করে যা 1 দিয়ে শুরু হয় এবং 1 দিয়ে বৃদ্ধি পাবে এটি কার্য সম্পাদনের জন্য 10 মান পর্যন্ত ক্যাশে করবে। ক্যাশে বিকল্পটি নির্দিষ্ট অ্যাক্সেসের জন্য মেমরিতে কত ক্রম মান সঞ্চিত করবে তা সুনির্দিষ্ট করে।

"ব্যক্তি" টেবিলটিতে একটি নতুন রেকর্ড সন্নিবেশ করতে, আমাদের পরের ফাংশনটি ব্যবহার করতে হবে (এই ফাংশনটি seq_Press ক্রম থেকে পরবর্তী মানটি পুনরুদ্ধার করে):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

উপরের এসকিউএল বিবৃতিটি "ব্যক্তি" টেবিলটিতে একটি নতুন রেকর্ড প্রবেশ করবে। "আইডি" কলামটি seq_Press ক্রম থেকে পরবর্তী নম্বর বরাদ্দ করা হবে। "ফার্স্টনাম" কলামটি "লার্স" এ সেট করা হবে এবং "লাস্টনাম" কলামটি "মনসেন" এ সেট করা হবে।


1

আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.