我的问题如下:
创建一个名为频繁旅行者(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 感谢
答案 0 :(得分:1)
令人讨厌的是,MySQL中没有实现检查约束,请参阅CHECK constraint in MySQL is not working
CHECK子句被解析但被所有存储引擎忽略。