কীভাবে সনাক্তকরণ কলাম সহ সারণী তৈরি করবেন


111

আমার একটি বিদ্যমান সারণী রয়েছে যা আমি ফুরিয়ে যাব কারণ আমি IDটেবিলের পরিচয় কলাম হতে কলাম সেট করে এটি তৈরি করি নি ।

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও ব্যবহার করে , আমি বিদ্যমান সারণির একটি "তৈরি করুন ..." স্ক্রিপ্ট করেছি এবং এটি পেয়েছি:

CREATE TABLE [dbo].[History](
    [ID] [int] NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

আমার প্রশ্ন হ'ল আমি কীভাবে এটি পরিবর্তন করব SQLযাতে আমার ফলাফলের টেবিলটি পরিচয়ID হিসাবে কলামটি সেট করে ?


11
[আইডি] [
অন্তর্

উত্তর:


153
CREATE TABLE [dbo].[History](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
) ON [PRIMARY]

1
আমি বিশ্বাস করি এটিই আমি খুঁজছিলাম। আমি PK_Historyমান IDবা কিছু পরিবর্তন করার প্রয়োজন নেই?
jp2code

কোন যে আপনার প্রয়োজন হওয়া উচিত, PK_History শুধু বাধ্যতা নাম প্রাথমিক কী বাধ্যতা ইতিমধ্যে কলাম আইডি হল
Gratzy

1
পরামিতি পরিচয়ের অর্থ (1,1) কি
OTC

4
পরিচয় (বীজ, ইনক্রিমেন্ট) ডকস.মাইক্রোসফটকম
en-

33

এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে, তবে আমি মনে করি সহজতম বাক্য গঠনটি হ'ল:

CREATE TABLE History (
    ID int primary key IDENTITY(1,1) NOT NULL,
    . . .

আপনি যখন বিকল্পগুলি পরিবর্তন করতে চান তখন আরও জটিল সীমাবদ্ধ সূচকটি কার্যকর index

যাইহোক, আমি এই জাতীয় কলামের ইতিহাসের তালিকা পছন্দ করি, তাই এটি বিদেশী কী সম্পর্কের কলামগুলির নামের সাথে মেলে।


5
ওপি বিশেষত একটি জিইউআই সরঞ্জামের আউটপুট নিয়ে কাজ করছে যা বিদ্যমান বস্তুর জন্য ডিডিএলকে আউটপুট করে। সেই সরঞ্জামটির সম্ভবত নেই, একটি "সম্ভব হলে সরল বাক্য গঠন ব্যবহার করুন" বিকল্পটি। অপারেটিং সিস্টেমের নির্দিষ্ট পরিস্থিতির জন্য সর্বনিম্ন ত্রুটিযুক্ত প্রবণটি হ'ল জেনারেটেড ডিডিএল-এর একটি লাইন সম্পাদনা করা এবং সরল সিনট্যাক্স ব্যবহার করে এটিকে স্ক্র্যাচ থেকে লেখার চেষ্টা না করা। এছাড়াও আপনি যে উদাহরণটি দিয়েছেন তা ওকে যেমন পিকে সীমাবদ্ধতার কোনও নাম দেয় না। অনেকে নামকরণে আমার প্রতিবন্ধকতা পছন্দ করেন তাই সমস্ত পরিবেশে তাদের একই নাম (দেব, পরীক্ষা, প্রোড) থাকে। ID int constraint PK_History primary key identity(1,1)আমি বিশ্বাস করি.
শ্যানন সিভেনেন্স

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

@ গর্ডনলিনফ: সাথী, প্রাথমিক কীটি ডিফল্টরূপে নাল নয়, কেন আপনাকে এখানে স্পষ্টভাবে নাল নয় উল্লেখ করতে হবে?
শিখতে

টুইটার । । উভয় সীমাবদ্ধতাগুলি ওপির কোডে ছিল। NOT NULLঅপ্রয়োজনীয়।
গর্ডন লিনফ

12
[id] [int] IDENTITY(1,1) NOT NULL,

অবশ্যই আপনি যেহেতু এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে টেবিল তৈরি করছেন আপনি পরিচয় স্পেসিফিকেশন সেট করতে টেবিল ডিজাইনার ব্যবহার করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


1
ভাল, ধন্যবাদ ফিল। আমি কীভাবে এটি করতে জানি, তবে টেবিলটি ইতিমধ্যে রয়েছে বলে আমি পারছি না। আমি টেবিলটি মুছতে এবং পুনরায় তৈরি করতে পেয়েছি, সুতরাং আমি স্ক্রিপ্টটি কেন ব্যবহার করছি।
jp2code

4
@ jp2code: আমি বোঝাতে চাইছি আপনি একটি পরিচয় কলাম দিয়ে একটি পরীক্ষার টেবিল তৈরি করতে পারতেন এবং তারপরে এটি কীভাবে নির্দিষ্ট করা উচিত তা দেখতে স্ক্রিপ্ট করা যায়।
ফিল

-2

অনন্য কী সর্বোচ্চ 2 টি নূন্যমূল্যকে মঞ্জুরি দেয়। Explaination:

create table teppp
(
id int identity(1,1) primary key,
name varchar(10 )unique,
addresss varchar(10)
)

insert into teppp ( name,addresss) values ('','address1')
insert into teppp ( name,addresss) values ('NULL','address2')
insert into teppp ( addresss) values ('address3')

select * from teppp
null string , address1
NULL,address2
NULL,address3

আপনি যদি নীচের মতো একই মান সন্নিবেশ করানোর চেষ্টা করেন:

insert into teppp ( name,addresss) values ('','address4')
insert into teppp ( name,addresss) values ('NULL','address5')
insert into teppp ( addresss) values ('address6')

প্রতিবার আপনি যেমন ত্রুটি পাবেন:

'UQ__teppp__72E12F1B2E1BDC42' অনন্য কী বাধা লঙ্ঘন। 'Dbo.teppp' অবজেক্টে সদৃশ কী sertোকানো যায় না।
বিবৃতিতে বাতিল করা হয়েছে।


আমার IDকলামটি নয়, কলামটি অনন্য করে তুলতে হবে Name। কেন আপনি কলামে অনন্য সীমাবদ্ধতা যুক্ত করেছেন Name? এটি কীভাবে আপনার tepppটেবিলে আপনার উপকার করবে ?
jp2code

1
এখানে কিউ এর কোনও উত্তর নেই
মার্টিন স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.