SQL Server Създаване на таблица с колона Unique Not Null и Not Empty (Проверете)

Как да създадете таблица с колона, която е уникална, не е нула и не е празна (Проверете)?

Опитах по-долу Query

CREATE TABLE Persons 
(
P_Id int NOT NULL UNIQUE,
LastName nvarchar(255) NOT NULL,
FirstName nvarchar(255),
Address nvarchar(255),
City nvarchar(255),
CHECK (P_Id>0)
)

Когато се опитам да създам таблица с ограничение UNIQUE и CHECK, тя извежда следната грешка. Възможно ли е да се използват две ограничения в една заявка?

Major Error 0x80040E14, Minor Error 25501
> CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName nvarchar(255) NOT NULL,
FirstName nvarchar(255),
Address nvarchar(255),
City nvarchar(255),
CHECK (P_Id>0)
)
There was an error parsing the query. [ Token line number = 8,Token line offset = 1,Token in error = CHECK ]. I am using SQL Server 2008. 

person Psyche Genie    schedule 22.09.2014    source източник
comment
Създаване на информация за таблица Създаване на таблица   -  person Tak    schedule 22.09.2014
comment
Наистина е възможно да имате и трите ограничения на един и същ ред (NOT NULL, UNIQUE и CHECK(yourconstraint...)), но CHECK трябва да е на същия ред с променливата, която ограничавате, и запетаята трябва да бъде след израза за проверка.   -  person    schedule 22.09.2014


Отговори (4)


Трябва да е нещо подобно.

 CREATE TABLE [dbo].[TABLE1](
        [COL1] [nvarchar](50) NOT NULL UNIQUE
    )

    ALTER TABLE [dbo].[TABLE1] WITH CHECK 
    ADD CONSTRAINT [CK_TABLE1] CHECK  (([COL1]<>N''))
person Bhasyakarulu Kottakota    schedule 22.09.2014

за този проблем можете да използвате ограничение в sql сървър

ALTER TABLE TBL  WITH CHECK ADD  CONSTRAINT [CK_TBL] CHECK  
(([dbo].[TBLCheckCustomeUnique](ID)=(1)))

TBLCheckCustomeUnique е дефинирана от потребителя функция, която проверява тези условия

person Mehdi Haghshenas    schedule 22.09.2014

Можете да контролирате уникалността на колона или набор от колони чрез UNIQUE ограничение.

Данните, съхранени в колоната или набора от колони, могат да бъдат проверени/контролирани (и принудени с различни правила) от CHECK ограничение.

Ограничението CHECK за постигане на вашата цел е следното:

ALTER TABLE [YourTable]
  ADD CONSTRAINT CK_CheckConstraintName
    CHECK (LEN([YourColumn]) >= {MinimumColumnWidth})

Можете да добавите ограниченията в израза CREATE TABLE или ако таблицата вече съществува можете да го добавите с командата ALTER TABLE .. ADD CONSTRAINT.

person Pred    schedule 22.09.2014

person    schedule
comment
Ако използвате версия, по-стара от SQL Server 2008, опитайте да използвате LEN() вместо DATALENGTH() - person ; 22.09.2014