একটি টেবিল তৈরি করার সময় ডিফল্ট সীমাবদ্ধতা কীভাবে যুক্ত করবেন? এসকিউএল সার্ভার [বন্ধ]


12

আমি নীচে দেখানো মত তাদের সীমাবদ্ধতার পরে কলামগুলি সহ একটি নতুন টেবিল তৈরি করার চেষ্টা করছি।

Create tblTest(
columns..
..
..
Gender int,
Constraint DF_tblTest_Gender Default 3 For Gender,
..
..
..
)

তবে আমি ডিফল্ট সীমাবদ্ধতার কাছে একটি ত্রুটি বার্তা পাচ্ছি,

'' এর জন্য 'ভুল সংশ্লেষ


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

উত্তর:


20

আপনি সীমাবদ্ধতার নাম ইনলাইন করতে পারেন:

CREATE TABLE tblTest(
  --
  --
  Gender int CONSTRAINT DF_tblTest_Gender DEFAULT 3,
  --
) ;

CREATE TABLEএমএসডিএন পৃষ্ঠাটি যেমন দেখায়:

DEFAULT

... এসকিউএল সার্ভারের পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যতা বজায় রাখতে, একটি সীমাবদ্ধতার নামটি একটিতে নির্ধারিত হতে পারে DEFAULT

একই পৃষ্ঠায়, আমরা খুঁজে পেতে পারে কেবল অপশন <table_constraint>আছে PRIMARY KEY, FOREIGN KEYএবং CHECKসীমাবদ্ধতার:

< table_constraint > ::=  
  [ CONSTRAINT constraint_name ]   
{  
   { PRIMARY KEY | UNIQUE }  
       {   
         NONCLUSTERED (column [ ASC | DESC ] [ ,... n ])  
         | NONCLUSTERED HASH (column [ ,... n ] ) 
               WITH ( BUCKET_COUNT = bucket_count )   
       }   
    | FOREIGN KEY   
        ( column [ ,...n ] )   
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
    | CHECK ( logical_expression )   
}

সুতরাং আপনি যদি কোনও ডিফল্ট সীমাবদ্ধতা (নামকরণ বা না) যুক্ত করতে চান তবে কেবলমাত্র উপায়গুলি হ'ল ইনলাইন করে বা কোনও ALTER TABLEবিবৃতি দিয়ে।


আমি আমার সীমাবদ্ধতার নাম রাখতে চাই, এটি যদি আমি ইনলাইন না করি তবে সম্ভব হবে না। ইনলাইন বা পরিবর্তন টেবিলের বিবৃতি ব্যবহার না করে কি কোনও উপায় আছে?
ধ্রুব রাজ

4
@ ধ্রুবরাজ - এই উত্তরটি যেমন দেখায় তেমন সম্ভব
মার্টিন স্মিথ

8

অন্য দুটি উত্তরের আপনার মন্তব্য দাবি করে যে এটি "ইনলাইন" তৈরি করার সময় আপনি কোনও ডিফল্ট সীমাবদ্ধতার নাম রাখতে পারবেন না। উভয় উত্তরই দেখায় যে আপনি প্রকৃতপক্ষে, ইনলাইন তৈরি করার সময় সীমাবদ্ধতার জন্য একটি নাম সরবরাহ করতে পারেন। আমি ফলাফলগুলি দেখিয়ে একটি তৃতীয় উদাহরণ যুক্ত করব।

IF OBJECT_ID('dbo.Test') IS NOT NULL
DROP TABLE dbo.Test;
CREATE TABLE dbo.Test
(
    TestID int NOT NULL
        CONSTRAINT PK_Test --here I'm naming the primary key constraint!
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , SomeData varchar(42) NOT NULL
        CONSTRAINT DF_Test_SomeData --this is the name of the default constraint!
        DEFAULT ('Carrie Fisher')
);

INSERT INTO dbo.Test DEFAULT VALUES;

এটি ডিফল্ট সীমাবদ্ধতার নামটি দেখায় DF_Test_SomeData:

SELECT TableName = t.name
    , ConstraintName = dc.name
FROM sys.default_constraints dc
    INNER JOIN sys.tables t ON dc.parent_object_id = t.object_id;

ফলাফল:

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

এসএসএমএসে অবজেক্ট এক্সপ্লোরারটির দিকে তাকানো নামটি দেখায়:

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


2

আপনি default valueমাঠ সংজ্ঞা ব্যবহার করতে পারেন ।

Create tblTest(
columns..
..
..
Gender int CONSTRAINT constraint_name DEFAULT 3,
..
..
..
)

অথবা বিকল্প টেবিল ব্যবহার করুন:

ALTER TABLE tblTest
ADD CONSTRAINT constraint_name 
DEFAULT 3
FOR Gender

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