বিদ্যমান উত্তরগুলি বরং পাতলা হওয়ায় আমি কিছু বিশদ যুক্ত করতে চাই :
সর্বাধিক গুরুত্বপূর্ণ ইঙ্গিতটি হ'ল: আপনার স্পষ্ট নাম ব্যতীত কখনও বাধা সৃষ্টি করা উচিত নয়!
নামবিহীন প্রতিবন্ধকতাগুলির সাথে সর্বাধিক সমস্যা : আপনি যখন বিভিন্ন গ্রাহক মেশিনে এটি চালাবেন, আপনি প্রতিটিের জন্য আলাদা / এলোমেলো নাম পাবেন । ভবিষ্যতের যে
কোনও আপগ্রেড স্ক্রিপ্টটি আসল মাথাব্যথা হবে ...
সাধারণ পরামর্শটি হ'ল:
- নাম ছাড়া কোনও বাধা নেই!
- কিছু নামকরণ কনভেনশন যেমন ব্যবহার করুন
DF_TableName_ColumnName
একটি ডিফল্ট সীমাবদ্ধতার জন্য
CK_TableName_ColumnName
একটি চেক সীমাবদ্ধতার জন্য
UQ_TableName_ColumnName
একটি অনন্য বাধা জন্য
PK_TableName
একটি প্রাথমিক কী বাধা জন্য
সাধারণ বাক্যবিন্যাস হয়
TheColumn <DataType> Nullability CONSTRAINT ConstraintName <ConstraintType> <ConstraintDetails>
এখানে চেষ্টা করুন
আপনি প্রতিটি কলামে আরও প্রতিবন্ধকতা যুক্ত করতে পারেন এবং কমা হিসাবে কলামগুলি যুক্ত করার সাথে আপনি অতিরিক্ত বাধা যুক্ত করতে পারেন:
CREATE TABLE dbo.SomeOtherTable(TheIdThere INT NOT NULL CONSTRAINT PK_SomeOtherTable PRIMARY KEY)
GO
CREATE TABLE dbo.TestTable
(
--define the primary key
ID INT IDENTITY NOT NULL CONSTRAINT PK_TestTable PRIMARY KEY
--let the string be unique (results in a unique index implicitly)
,SomeUniqueString VARCHAR(100) NOT NULL CONSTRAINT UQ_TestTable_SomeUniqueString UNIQUE
--define two constraints, one for a default value and one for a value check
,SomeNumber INT NULL CONSTRAINT DF_TestTable_SomeNumber DEFAULT (0)
CONSTRAINT CK_TestTable_SomeNumber_gt100 CHECK(SomeNumber>100)
--add a foreign key constraint
,SomeFK INT NOT NULL CONSTRAINT FK_TestTable_SomeFK FOREIGN KEY REFERENCES dbo.SomeOtherTable(TheIdThere)
--add a constraint for two columns separately
,CONSTRAINT UQ_TestTable_StringAndNumber UNIQUE(SomeFK,SomeNumber)
);
GO
- কিছু তথ্য সন্নিবেশ করুন
INSERT INTO dbo.SomeOtherTable VALUES(1);
INSERT INTO dbo.TestTable(SomeUniqueString,SomeNumber,SomeFK) VALUES('hello',111,1);
GO
INSERT INTO dbo.TestTable(SomeUniqueString,SomeNumber,SomeFK)
VALUES('fails due to uniqueness of 111,1',111,1);