2012-05-13 34 views
0

當我建立一個表時,是否聲明'name'屬性爲varchar使其成爲驗證規則還是僅僅定義數據類型?VARCHAR或INT是驗證規則嗎?

CREATE TABLE `categories` (
    `id` int(11) NOT NULL auto_increment, 
    `name` varchar(200) NOT NULL, 
    `user_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
); 

我很困惑的是VARCHAR是設置數據類型,驗證規則還是這兩者。所以VARCHAR是一種驗證規則,因爲有人不能輸入INT?

回答

0

它取決於您將要存儲到這些字段的數據類型,並且這些定義了您應該使用的數據類型。

實施例:name字段將被存儲字符(字符串文字)和昂斯不能INT類型和必須是STRING型這在SQL是CHARVARCHARNVARCHAR

+0

我很困惑的是,VARCHAR是否設置了數據類型,驗證規則或這兩者。所以VARCHAR是一種驗證規則,因爲有人不能輸入INT? – user1392324

+0

兩種方法你可以想到,因爲存儲的數據是字符串類型,你必須選擇VARCHAR作爲該字段的數據類型,並且當你將VARCHAR設置爲數據類型時;你的sql引擎確保你不能在該字段中輸入錯誤的類型數據......這肯定是一個驗證。希望這清除了這個想法。 – Rahul

0

它僅定義數據類型。如果傳遞了錯誤的數據類型,則根據服務器設置,會執行數據的implisit轉換(大多數情況)或者查詢被拒絕(例如:MySQL的STRICT模式)。數據驗證通常在應用程序或觸發器中完成。