首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server创建列唯一、不为空和不为空的表(检查)

问Server创建列唯一、不为空和不为空的表(检查)
EN

Stack Overflow用户
提问于 2014-09-22 14:50:15
回答 4查看 3.8K关注 0票数 1

如何创建具有唯一、非空和非空列的表(Check)?

我试过以下查询

代码语言:javascript
复制
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)
)

当我试图创建一个同时具有唯一约束和CHECK约束的表时,它会抛出以下错误。在一个查询中可以使用两个约束吗?

代码语言:javascript
复制
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. 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-22 14:57:58

代码语言:javascript
复制
    CREATE TABLE tab
    (
       id  INT, 
      notnullandnotemptystr VARCHAR(10) NOT NULL UNIQUE CHECK (DATALENGTH(notnullandnotemptystr) > 0)
    )  
票数 2
EN

Stack Overflow用户

发布于 2014-09-22 14:56:17

应该是这样的。

代码语言:javascript
复制
 CREATE TABLE [dbo].[TABLE1](
        [COL1] [nvarchar](50) NOT NULL UNIQUE
    )

    ALTER TABLE [dbo].[TABLE1] WITH CHECK 
    ADD CONSTRAINT [CK_TABLE1] CHECK  (([COL1]<>N''))
票数 2
EN

Stack Overflow用户

发布于 2014-09-22 14:56:04

对于此问题,可以在sql server中使用约束。

代码语言:javascript
复制
ALTER TABLE TBL  WITH CHECK ADD  CONSTRAINT [CK_TBL] CHECK  
(([dbo].[TBLCheckCustomeUnique](ID)=(1)))

TBLCheckCustomeUnique是一个检查此条件的用户定义函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25977007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档