2014-10-10 43 views
0

我想在我的表中添加檢查約束,如果shop_id行的總和大於3,可以防止向表中添加更多數據。我已經編寫了下面的代碼它只是不工作。請檢查並引導我。當我嘗試在我的表中添加檢查約束沒有什麼變化

ALTER TABLE kinect_temp_data 
ADD CONSTRAINT my_const CHECK (sum(distinct(shop_id))<3) 

上面的查詢運行成功,但不會產生任何影響,但我還是能能夠添加更多的行,當我詢問這一點,顯示不加檢查約束。

SHOW CREATE TABLE kinect_temp_data 

輸出

CREATE TABLE `kinect_temp_data` (
`cart_number` int(11) NOT NULL AUTO_INCREMENT, 
`product_id` varchar(50) NOT NULL, 
`shop_id` varchar(50) NOT NULL, 
`product_name` varchar(50) NOT NULL, 
`item_number` varchar(50) NOT NULL, 
`image1_path` varchar(50) NOT NULL, 
`image2_path` varchar(50) NOT NULL, 
`image3_path` varchar(50) NOT NULL, 
`price` int(11) NOT NULL, 
PRIMARY KEY (`cart_number`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 

請檢查並指導我什麼,我在這裏做擰乾。

謝謝。

回答

1

MySQL不支持檢查約束 - 它們被忽略。

但是,您可以使用BEFORE INSERTBEFORE UPDATE觸發器來實現此類功能。

There is good explanation

+0

感謝您的指導! :) – user3480644 2014-10-10 06:31:31

相關問題