如何创建一个具有唯一,非空且不为空(Check)的列的表?
我在“查询”
下面尝试过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.
答案 0 :(得分:2)
它应该是这样的。
CREATE TABLE [dbo].[TABLE1](
[COL1] [nvarchar](50) NOT NULL UNIQUE
)
ALTER TABLE [dbo].[TABLE1] WITH CHECK
ADD CONSTRAINT [CK_TABLE1] CHECK (([COL1]<>N''))
答案 1 :(得分:2)
CREATE TABLE tab
(
id INT,
notnullandnotemptystr VARCHAR(10) NOT NULL UNIQUE CHECK (DATALENGTH(notnullandnotemptystr) > 0)
)
答案 2 :(得分:0)
对于这个问题,你可以在sql server
中使用ConstraintALTER TABLE TBL WITH CHECK ADD CONSTRAINT [CK_TBL] CHECK
(([dbo].[TBLCheckCustomeUnique](ID)=(1)))
TBLCheckCustomeUnique是用于检查此条件的用户定义函数
答案 3 :(得分:0)
您可以控制UNIQUE
约束设置的列或列的唯一性。
CHECK
约束可以检查/控制(并使用各种规则强制)存储在列或列集中的数据。
实现目标的CHECK
约束如下:
ALTER TABLE [YourTable]
ADD CONSTRAINT CK_CheckConstraintName
CHECK (LEN([YourColumn]) >= {MinimumColumnWidth})
您可以在CREATE TABLE
语句中添加约束,或者如果表已经存在,您可以使用ALTER TABLE .. ADD CONSTRAINT
语句添加它。