SQL CHECK约束..是不是和我一起工作

问题描述:

我的问题是这样的:SQL CHECK约束..是不是和我一起工作

创建新表命名为常旅客(FreqTrav)。它只会储存与公司进行两次以上旅行的乘客。它会记录乘客姓名,乘客号码,地址,电话号码,总旅程和总付费。显示你的CREATE TABLE查询和INSERT查询。请使用子查询插入记录(即从SELECT查询插入)。

我又写道下面的查询 :

 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))) 
     ); 

,但它不是为我工作,因为我试图插入passengernum谁我以前不出差的两倍以上,并插入。 另外,我有一个关于其他列的问题是,如果插入的值与原始表中的值不同,还是必须执行与我对总行程和总票价所做的相同的检查常量?

我重视我的数据库表以低于以及PIC的链接 http://i.stack.imgur.com/ojzHt.png 感谢

烦人,检查约束没有在MySQL中实现,见CHECK constraint in MySQL is not working

的CHECK子句是解析但忽略由所有存储引擎。

(来源:MySQL Reference Manual: Create Table