Sql-Server

將列設置為僅接受負值

  • March 21, 2017

無論如何要更改列數據類型,以便它只接受負值?

它是 SQL Server 2014 Azure。

CREATE TABLE t ( n INTEGER NOT NULL CHECK (n < 0) );

適用於我知道的大多數 RDBMS。

編輯: @IMSop 的評論提示我說明為什麼我寫了“我知道的大多數RDMS:”眾所周知(並且非常不幸)MySQL 不遵守CHECK約束。在 MySQL 中,您必須改用觸發器。另一種選擇是切換到 MariaDB。

這可以通過使用CHECK約束來實現(至少在 Sql Server 中) 。

從上面的文章:

CHECK 約束通過限制一個或多個列接受的值來強制域完整性。您可以使用基於邏輯運算符返回 TRUE 或 FALSE 的任何邏輯(布爾)表達式創建 CHECK 約束。例如,可以通過創建 CHECK 約束來限制薪水列的值範圍,該約束僅允許範圍為 $ 15,000 through $ 100,000。這樣可以防止輸入超出正常工資範圍的工資。邏輯表達式如下:薪水 >= 15000 AND 薪水 <= 100000。

引用自:https://dba.stackexchange.com/questions/167709