2015-02-10 124 views
-2
CREATE TABLE users 
(
    id INTEGER PRIMARY KEY IDENTITY, 
    name VARCHAR (128), 
    email VARCHAR (128), 
    pass VARCHAR (128), 
    paid BIT, 
    rank FLOAT, 
    status INT, 
    active BIT 
); 

CREATE TABLE books 
(
    id INTEGER PRIMARY KEY IDENTITY, 
    FOREIGN KEY (owner) REFERENCES users (id), 
    FOREIGN KEY (holder) REFERENCES users (id), 
    name VARCHAR (128), 
    author VARCHAR (128), 
    year INTEGER, 
    rank FLOAT, 
    publisher VARCHAR (128) 
); 

錯誤列表:SQL Server的外鍵引用

消息1769,級別16,狀態1,在引用表 '書' 線18
外鍵 '所有者' 引用無效列 '所有者' 。

Msg 1750,Level 16,State 0,Line 18
無法創建約束。查看以前的錯誤。

+3

錯誤消息是相當清楚的。 'books'沒有名爲'owner'的列。 – 2015-02-10 13:47:09

回答

2

您需要定義列來引用它們。你可以把所有的定義在這樣一行:

CREATE TABLE books (
    id INTEGER PRIMARY KEY IDENTITY, 
    owner INTEGER REFERENCES users(id), 
    holder INTEGER REFERENCES users(id), 
    name VARCHAR(128), 
    author VARCHAR(128), 
    year INTEGER, 
    rank FLOAT, 
    publisher VARCHAR (128) 
); 
+0

非常感謝! – Tolyas 2015-02-10 14:16:05

1

您必須聲明VAR所有者和持有者
SQL腳本:

CREATE TABLE books (
id INTEGER PRIMARY KEY IDENTITY, 
ownder INTEGER, 
holder INTEGER, 
name VARCHAR (128), 
author VARCHAR (128), 
year INTEGER, 
rank FLOAT, 
publisher VARCHAR (128) 
FOREIGN KEY (owner) REFERENCES users (id), 
FOREIGN KEY (holder) REFERENCES users (id), 
); 
0
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR (128), 
email VARCHAR (128), 
pass VARCHAR (128), 
paid BIT, 
rank FLOAT, 
status INT, 
active BIT 
); 


CREATE TABLE books (
id INTEGER PRIMARY KEY AUTO_INCREMENT, 
FOREIGN KEY (owner) REFERENCES users (id), 
FOREIGN KEY (holder) REFERENCES users (id), 
owner INTEGER, 
holder INTEGER, 
name VARCHAR (128), 
author VARCHAR (128), 
year INTEGER, 
rank FLOAT, 
publisher VARCHAR (128) 
);