2017-05-07 80 views
1

SQL Server 2014問題。我創建了一個包含兩個帶DATE數據類型的DATE列的表。另一個是未來事件。我創建了約會date1 < date2。我插入表中,將NULL放入date2中,因爲它是未來的。我無法更新表格中的任何內容。當試圖用日期更新date2時,我得到Operand類型衝突:int與日期不兼容。我試圖用我無法想到的方式輸入帶有和不帶撇號的日期。由於我添加的約束,我無法刪除或更改列。幫幫我。請具體說明修改或更新修復所需的SQL語法。將NULL插入日期,現在無法更新

+0

你能分享你使用過的陳述嗎? – Mureinik

回答

0

改變約束!它從來不是真的 - 要麼是假的,要麼是NULL。所以,刪除你的約束,這樣做:

alter table t add constraint chk_t_date1_date2 check ((date1 < date2) or date2 is null); 

要刪除約束,你這樣做:

alter table t drop constraint <constraint name>; 

你需要知道的約束,你可以從information_schema.table_constraints得到的名稱。

+0

我成功刪除了約束。我用OR或NULL添加了新的。但是我仍然無法更新該列。同樣的不兼容。我嘗試沒有任何約束,不能更新該字段作爲字符串或日期。這是我的語法UPDATE PET SET DeceasedDate = 2017-04-02在哪裏PetID = 3 –

+0

我認爲問題是與我沒有運行日期字段本身的觸發器。感謝大家! –

+0

@KathleenSheehan。 。 。這個問題將會是觸發器和約束條件。當然,觸發器在插入使其通過約束之前不會被觸發。 –

0

您應該使用單引號'2019-04-18'與'之前和之後。

+0

與建議一樣好,OP提到date2中有NULL值。 SQL Server不會將該值視爲空而是未知。它永遠不會正確評估。 –