2014-10-03 68 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;