2017-06-06 224 views
-6

如果status等于'y',我想删除路径。但它不起作用。SQL Server约束

create table example 
(
    [status] varchar(1) not null check([status] in ('y', 'n')), 
    [path] varchar(70) not null 
    if([status] == 'y') { 
     [path] == null; 
    } 
) 
+0

值它是一个选择?你能给我们完整的陈述吗? – Hybris95

+0

你能给我们完整的错误信息吗? – michip96

+0

不,它不是一个选择,它是创建表 –

回答

1

正如我在评论中写道,我不会在现有的值设置为null。相反,计算列对我来说似乎是更好的选择。 此外,varchar(1)是您可以选择的第二差数据类型(nvarchar(1)甚至最差)。首先,如果你知道你只有一个固定长度的字符串,使用charnchar。第二,如果它只是指定yn,你最好只使用bit,什么只持有0或1

CREATE TABLE Example 
(
    [status] bit not null, -- 0 for `n`, 1 for `y` 
    [originalPath] varchar(70) not null, -- keeps the original value. Think write only. 
    [path] as (case when status = 1 then 
        null 
       else 
        originalPath 
       end) -- computed column to use in select statements. This is read only. 
)