2015-04-01 68 views
-1

我的問題是這樣的: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 感謝

回答