2014-10-03 63 views
0

我有一个表ProviderValueCard。是否可以设置一个默认约束来创建新行,如果列SessionsProgress> 0,那么自动设置列SurveyCompleted = 1的条目的值,并在SessionProgress = 0时将其设置为0?自动更改值的默认约束条件

所以psedo:如果SessionsProgress> 0,则SurveyCompleted = 1,否则SurveyCompleted = 0

我上心从marc_s回答这个问题:Automatically inserting datetime with insert

+3

检查出来http://stackoverflow.com/questions/15521546/how-to-create-default-constraint-dependent-other-column- in-sql-server – abatishchev 2014-10-03 17:01:53

+0

@abatishchev - 你打败了我..你也可以使用触发器,但计算似乎是要走的路。 – JiggsJedi 2014-10-03 17:02:46

+0

如果它不起作用,你需要一个触发器(评论是只允许每15秒1)(: – abatishchev 2014-10-03 17:03:01

回答

0

感谢abatishchev,这里是什么工作。我无法弄清楚>语法错误:/。我没有任何重要的专栏,所以放弃它并不是问题。

ALTER TABLE ProviderValueCard DROP COLUMN SurveyCompleted 

ALTER TABLE ProviderValueCard ADD SurveyCompleted AS CASE [SessionsProgress] WHEN '1' THEN 1 
WHEN '2' THEN 1 
WHEN '3' THEN 1 
WHEN '4' THEN 1 
WHEN '5' THEN 1 
WHEN '0' THEN 0 
END 
+0

难道你不能只说'当'0'那么'0'其他'1'结束'? – AHiggins 2014-10-03 17:46:38

+1

当他们输入为6? – Paparazzi 2014-10-03 21:44:10

0

你得到位该行为

declare @bit bit; 
    set @bit = 0; 
    print @bit; 
    set @bit = 1; 
    print @bit; 
    set @bit = 2; 
    print @bit; 
    set @bit = 2000; 
    print @bit;