SQL CHECK CONSTRAINT ..没有和我一起工作

时间:2015-04-01 06:16:40

标签: mysql check-constraints

我的问题如下:

创建一个名为频繁旅行者(FreqTrav)的新表。它只会存储与公司一起旅行超过2次的乘客。它将记录乘客姓名,乘客人数,地址,电话号码,总旅行和支付的总票价。显示您的CREATE TABLE查询和INSERT查询。请使用子查询插入记录(即从SELECT查询中插入)。

我Worte以下查询 :

        CREATE TABLE FreqTrav (

    PASSENGERNUM INT(20) 
    CHECK (PASSENGERNUM IN 
(SELECT P.PASSENGERNUM
    FROM PASSENGER P, VOYAGE V
    WHERE P.PASSENGERNUM = V.PASSENGERNUM
    GROUP BY V.PASSENGERNUM
    HAVING COUNT( * ) >2) )

    passengername CHAR (20)
    address VARCHAR(50)
    phonenumber CHAR(20)
        totaltrips INT (20) 
        CHECK (totaltrips IN 
(SELECT COUNT(PASSENGERNUM) 
FROM VOYAGE 
GROUP BY PASSENGERNUM HAVING COUNT(*) >2))
        totalfare INT (20)
     CHECK (totalfare IN
( SELECT SUM(FARE) 
FROM VOYAGE
 WHERE PASSENGERNUM IN 
(SELECT COUNT(PASSENGERNUM) 
FROM VOYAGE
 GROUP BY PASSENGERNUM HAVING COUNT(*) >2)))
        );

但是我没有为我工作,因为我尝试插入一个旅行时间超过两次而且已经插入的旅客。 另外,我有一个关于其他列的问题,如果插入的值与原始表中的值不同,或者我必须执行与总行程和总票价相同的检查常量,那么它是否会成为okey?

我也将数据库表附在下面的pic链接中 http://i.stack.imgur.com/ojzHt.png 感谢

1 个答案:

答案 0 :(得分:1)

令人讨厌的是,MySQL中没有实现检查约束,请参阅CHECK constraint in MySQL is not working

  

CHECK子句被解析但被所有存储引擎忽略。

(资料来源:MySQL Reference Manual: Create Table