2012-06-07 40 views
0

將值插入到表中時是否有避免將無效數據存入列的方法?將數據插入表時SQL可接受的值範圍

前表 - 項目

Itno - pk 
Itdesc 
salesprice - Acceptable values should > 150 and < 10500 

TY

+0

在表中的這個字段上創建一個約束。你正在使用哪個db。 –

+0

不同的數據庫都有約束系統,但通常,在您甚至考慮寫入數據庫之前很久,您應該已經清理了輸入,通知了用戶錯誤,進行了計算以產生寫入或更改程序狀態的值,等等。 所以,如果你只是問你的數據庫去做,你做錯了。 –

+1

什麼是數據庫系統,哪個版本? ** SQL **只是*結構化查詢語言* - 許多數據庫系統使用的語言,而不是數據庫產品......像這樣的東西通常是特定於供應商的 - 所以我們真的需要知道您的數據庫系統是什麼,重新使用.... –

回答

1

以下語法適用到MySQL/SQL服務器/甲骨文/ MS訪問。

CREATE TABLE mytable 
(
Itno int NOT NULL, 
Itdesc varchar(255) NOT NULL, 
salesprice int, 
CONSTRAINT chk_salesprice CHECK (salesprice >150 AND salesprice < 10500) 
) 

您還可以使用用戶定義的函數與檢查約束驗證動態值。

UDF with Check Constraint

Refer to see more examples

+0

@marc_s,謝謝你提示我錯字的錯誤。 –

0

除了@ Romil的回答,最RDBMS的支持觸發可之前或之後提交驗證數據。

通常情況下,CHECK約束是首選,但有時(特別是在數據必須根據可變標準進行評估的情況下),觸發器是唯一的方法。