2014-02-14 3 views
0

я не могу узнать, что случилось с моим SQL Query:SQL Структура помощи и запрос

CREATE TABLE Product (
         productID int NOT NULL, 
         name varchar(255) NOT NULL, 
         price int(255), 
         PRIMARY KEY (productID) 
        ) 

CREATE TABLE User ( 
        userID int NOT NULL, 
        PRIMARY KEY (userID) 
        ) 

CREATE TABLE Purchased ( 
        productID int NOT NULL, 
        userID varchar(255) NOT NULL, 
        date date(255), NOT NULL, 
        FOREIGN KEY (productID) REFERENCES Product(productID) FOREIGN KEY (userID) REFERENCES User(userID) 
        ) 

Пожалуйста, может кто-то помочь

+0

Пожалуйста, сообщите нам, какую ошибку вы получаете? – Incognito

ответ

0

Есть некоторая ошибка синтаксиса в вашем create table заявления.

  • Дата это ключевое слово так не очень хорошая практика, чтобы использовать его.
  • User_ID является INT в вашем USER таблице и в таблице purchased вы делаете это VARCHAR
  • Для даты типа данных нет необходимости указывать количество символов.

Правильное утверждение

CREATE TABLE purchased 
    ( 
    productid INT NOT NULL, 
    userid INT NOT NULL, 
    date1  DATE NOT NULL, 
    FOREIGN KEY (productid) REFERENCES product(productid), 
    FOREIGN KEY (userid) REFERENCES USER(userid) 
) 

SQL Fiddle

+2

действительно, ключевое слово может использоваться как имя столбца. это не очень хорошая практика. – Alexander

+0

@ Александр: спасибо за информацию :) –

1

Для начала, у вас есть ошибка синтаксиса в вашем третьем CREATE TABLE заявлении , где вы указали запятую перед ограничением NOT NULL и отсутствующей запятой перед вторым определением внешнего ключа.

Следует отметить, что вы не должны указывать какой-либо параметр для типа данных DATE, как вы указали.

EDIT: Тип данных userID в этой таблице должен быть таким же, как тип данных таблицы пользователя для работы внешнего ключа.

Правильное утверждение

CREATE TABLE Purchased (productID int NOT NULL, 
         userID INT NOT NULL, 
         date date NOT NULL, 
         FOREIGN KEY (productID) REFERENCES Product(productID), 
         FOREIGN KEY (userID) REFERENCES User(userID) 
         ) 

Если вы получаете некоторую другую ошибку, пожалуйста, обновите ваш вопрос

+0

Неверная инструкция, так как это не создаст таблицу. Иностранный ключевой тип данных отличается –

+0

@Gone Спасибо! Я отредактировал ответ. Я не заметил, что – Incognito

0

Использование date date NOT NULL

CREATE TABLE Product (productID int NOT NULL, name varchar(255) NOT NULL, price int(255), PRIMARY KEY (productID)); 

CREATE TABLE User (userID int NOT NULL, PRIMARY KEY (userID)); 

CREATE TABLE Purchased (productID int NOT NULL, userID int NOT NULL , date date NOT NULL, 
        FOREIGN KEY (productID) REFERENCES Product(productID), 
        FOREIGN KEY (userID) REFERENCES User(userID)) 

SQl fiddle

1

В вашем опрашивать проблема заключается в столбце типа даты, поэтому нет необходимости объявлять дату как переменную, потому что это ключевое слово в sql.

 1.Date is a keyword 
    2.No need to size for date 
Смежные вопросы