2017-06-06 176 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. 
)