2017-07-27 18 views
2

pgAdmin 4でいくつかのテーブルを作成していますが、何らかの理由でタイトルに誤りがあります。私は問題がないと私は完璧にコンパイルされた私のような他のコードサンプルを見てきました。 IDEone(http://ideone.com/ZBn2Nr)でもOKです。PostgreSQLの「参照元と参照先の列数が一致していません」

ありがとうございました!

Create table item 
    (iname varchar(30) primary key, 
    itype varchar(30)); 

Create table Cafe 
    (license numeric(5,0) primary key, 
    cname varchar(30), 
    address varchar(30)); 

Create table Client 
    (cid numeric(5,0) primary key, 
    name varchar(30), 
    phone numeric(9,0)); 

Create table Likes 
    (cid numeric(5,0), 
    iname varchar(30), 
    primary key(cid,iname), 
    foreign key(cid) references Client, 
    foreign key(iname) references item); 

Create table Sells 
    (license numeric(5,0), 
    iname varchar(30), 
    price float check(price > 0), 
    primary key(license,iname), 
    foreign key(license) references Cafe, 
    foreign key(iname) references item); 

Create table Receipt 
    (cid numeric(5,0), 
    rno numeric(5,0), 
    license numeric(5,0), 
    rdate date, 
    primary key(cid,rno), 
    foreign key(cid) references Client, 
    foreign key(license) references Cafe); 

Create table Buys 
    (cid numeric(5,0), 
    rno numeric(5,0), 
    iname varchar(30), 
    amount int check(amount > 0), 
    primary key(cid,rno,iname), 
    foreign key(cid) references Client, 
    foreign key(rno) references Receipt, 
    foreign key(iname) references item); 

答えて

2

参照句に列リストを指定しないと、参照されるテーブルの主キーに展開されます。例えば

foreign key(rno) references Receipt 

ので、列の数が

+0

と一致していません

foreign key(rno) references Receipt(cid,rno) 

に展開だから私はこの行を変更する必要があります - 外部キー(RNO)参照の領収書(rno)?私はそれをやろうとしましたが、別のエラーが出ます:今回は:ERROR: "foreign"またはその近くの構文エラー –

+0

偶然、カンマを削除した可能性があります。また、Receipt.rnoを一意にする必要があります。 http://sqlfiddle.com/#!17/e1592 – Eelke

関連する問題