2014-02-13 6 views
2

Привет всем, мне нужна помощь в создании таблиц. У меня есть сценарий ниже, и он создает несколько таблиц. Когда я пытаюсь запустить сценарий, он дает мне эту ошибку:postgresql синтаксическая ошибка при создании таблицы

psql:script.sql:10: ERROR: syntax error at or near "Group" 
LINE 6: CREATE TABLE Group(

Может ли кто-нибудь сказать мне, что происходит?

CREATE TABLE Group(
    name  varchar(40) PRIMARY KEY NOT NULL 
); 

CREATE TABLE Artist(
    name  varchar(30) PRIMARY KEY NOT NULL, 
     birthplace varchar(20)    NOT NULL, 
     age  int      NOT NULL CHECK (age > 0), 
     style  varchar(20)    NOT NULL 
); 

CREATE TABLE Artwork(
    title  varchar(40) PRIMARY KEY  NOT NULL, 
     artist  varchar(30)     NOT NULL references Artist(name), 
     group_name varchar(40)     NOT NULL references Group(name), 
     year  int       NOT NULL CHECK (year > 0), 
     type  varchar(30)     NOT NULL, 
     price  money      NOT NULL, 
); 

CREATE TABLE Customer(
    cust_id  int PRIMARY KEY NOT NULL, 
    name   varchar(40)  NOT NULL, 
     address  varcahr(60)  NOT NULL, 
     amount  money    NOT NULL CHECK(amount > 0), 
     like_artist varchar(30)  NOT NULL references Artist(name), 
     like_group varchar(40)  NOT NULL references Group(name) 
); 
+0

это также дает мне эти ошибки из-за ссылочной целостности ограничения PSQL: script.sql: 16: ОШИБКА: отношение "художника" уже существует Psql: script.sql: 25: ошибка: ошибка синтаксиса на уровне или рядом с «группой» ЛИНИЯ 4: ... varchar (40) NOT NULL группа ссылок (имя ... ^ psql: script.sql: 34: ОШИБКА: синтаксическая ошибка в или рядом с «группой» LINE 7 : ..._ group varchar (40) NOT NULL reference group (name ... – alpal

+2

'Group' - [зарезервированное ключевое слово] (http://www.postgresql.org/docs/7.3/static/sql-keywords-appendix .html) в SQL и должен быть указан как «Группа» '. –

ответ

10

это было много проблем это работает для меня. В postgres имена, которые не все в нижнем регистре, должны быть двойными. также некоторые из ваших имен таблиц являются зарезервированными словами, деньги не могут быть> и int, а также была запятая.

CREATE TABLE "group"(name varchar(40) PRIMARY KEY NOT NULL); 

CREATE TABLE artist(name varchar(30) PRIMARY KEY NOT NULL, birthplace varchar(20) NOT NULL, age int NOT NULL CHECK (age > 0), style varchar(20) NOT NULL); 

CREATE TABLE artwork(title varchar(40) PRIMARY KEY NOT NULL, artist varchar(30) NOT NULL references artist(name), 
group_name varchar(40) NOT NULL references "group"(name), year int NOT NULL CHECK (year > 0), type varchar(30) NOT NULL, price money NOT NULL); 

CREATE TABLE customer(cust_id int PRIMARY KEY NOT NULL, name varchar(40) NOT NULL, address varchar(60) NOT NULL, 
amount money NOT NULL CHECK(amount > cast(0.0 as money)), like_artist varchar(30) NOT NULL references artist(name), like_group varchar(40) NOT NULL references "group"(name)); 
+0

Спасибо большое, что отлично! – alpal

Смежные вопросы