2015-02-10 126 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) 
);