当我尝试在表格中添加Check Constraint时没有任何变化

时间:2014-10-10 05:49:17

标签: php mysql sql database

我正在尝试在我的表中添加检查约束,如果行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 个答案:

答案 0 :(得分:1)

MySQL不支持检查约束 - 它们会被忽略。

但您可以使用BEFORE INSERTBEFORE UPDATE触发器来实现此类功能。

There is good explanation