这是我的架构:
CREATE TABLE item (
id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
title varchar(60) NOT NULL,
description varchar(900) NOT NULL,
company_id integer NOT NULL REFERENCES company (id),
date datetime NOT NULL,
source_id integer NOT NULL REFERENCES source (id),
link varchar(255) NOT NULL,
location_id integer NOT NULL REFERENCES location (id)
);
CREATE TABLE location (
id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(255) NOT NULL,
coordinate varchar(255) NOT NULL,
location_id integer NOT NULL REFERENCES country (id)
);
CREATE TABLE country (
id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(255) NOT NULL
);
CREATE TABLE company (
id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(60) NOT NULL,
);
CREATE TABLE source (
id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(60) NOT NULL,
);
当我把它放入并单击构建架构时,它告诉我http://sqlfiddle.com上的第4行上存在无效语法。我可以看到没有错误,有人可以解决一些问题吗?
如果我做得不好或作出任何不好的决定,请告诉我。
答案 0 :(得分:4)
你有2个错误的逗号。一个在“CREATE TABLE公司”的末尾,“CREATE TABLE source”。 并在位置之前创建国家。
CREATE TABLE company (
id SERIAL PRIMARY KEY,
name varchar(60) NOT NULL
);
CREATE TABLE country (
id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL
);
CREATE TABLE location (
id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL,
coordinate varchar(255) NOT NULL,
location_id integer NOT NULL REFERENCES country (id)
);
CREATE TABLE source (
id SERIAL PRIMARY KEY,
name varchar(60) NOT NULL
);
CREATE TABLE item (
id SERIAL PRIMARY KEY,
title varchar(60) NOT NULL,
description varchar(900) NOT NULL,
company_id integer NOT NULL REFERENCES company (id),
date timestamp NOT NULL,
source_id integer NOT NULL REFERENCES source (id),
link varchar(255) NOT NULL,
location_id integer NOT NULL REFERENCES location (id)
);
答案 1 :(得分:2)
您必须先创建表,然后才能在其他地方引用它们。按此顺序创建表: 资源, 公司, 国家, 地点, 项目
请注意,您可以按任何顺序执行前三个,但Country必须位于Location之前,Location,Source和Company必须位于Item之前。
在Source和Company的定义末尾还有两个额外的逗号。你必须删除它们。
答案 2 :(得分:1)
country
表之前创建location
表。,
和company
定义中的悬空source
。答案 3 :(得分:1)
首先,您需要创建表格country
,然后location
,然后是company
,source
和最后item
。