SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.08.2009 12:24:05

oleg999
Завсегдатай
Зарегистрирован: 19.08.2009
Сообщений: 48

Как связать таблицы в Mysql

Добрый день, я хотел бы узнать как можно связать таблицы в базе данных Mysql

У меня следующие таблицы:

direction         
type             
unit

Сейчас я хочу создать новую таблицу main которая должна содержать поля:

create table main  (mainid int(10) not null auto_increment,
dirid int(10) not null, typeid int(10) not null,
price int(10) not null, 
unitid(10) not null, 
primary key (mainid),
FOREIGN KEY (dirid)       REFERENCES direction (dirid) ON DELETE RESTRICT     ON UPDATE CASCADE,
FOREIGN KEY (typeid)    REFERENCES type (typeid)     ON DELETE RESTRICT     ON UPDATE CASCADE,
FOREIGN KEY (unitid)     REFERENCES unit (unitid)       ON DELETE RESTRICT     ON UPDATE CASCADE );

Проблема собственно в синтаксисе подскажите пожалуйста где, что нужно исправить?

direction:
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| dirid   | int(10)     | NO   | PRI | NULL    | auto_increment |
| dirname | varchar(50) | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+

type:
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| typeid   | int(10)     | NO   | PRI | NULL    | auto_increment |
| typename | varchar(50) | NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

unit:
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| unitid   | int(10)     | NO   | PRI | NULL    | auto_increment |
| unitname | varchar(50) | NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

Спасибо...

Неактивен

 

#2 19.08.2009 13:48:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как связать таблицы в Mysql

Синтаксис нормальный, только добавьте еще отдельные индексы по каждому полю,
которые упоминаются в FK.

Неактивен

 

#3 19.08.2009 13:54:32

oleg999
Завсегдатай
Зарегистрирован: 19.08.2009
Сообщений: 48

Re: Как связать таблицы в Mysql

т.е мне нужно добавить строчки:
key dirid (dirid),
key typeid (typeid),
key unitid (unitid)

правильно???

Неактивен

 

#4 19.08.2009 14:00:45

oleg999
Завсегдатай
Зарегистрирован: 19.08.2009
Сообщений: 48

Re: Как связать таблицы в Mysql

Я так и сделал... тоже самое...

Неактивен

 

#5 19.08.2009 14:21:00

oleg999
Завсегдатай
Зарегистрирован: 19.08.2009
Сообщений: 48

Re: Как связать таблицы в Mysql

Получаю эту ошибку...

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(10) not null,
PRIMARY KEY(mainid),
FOREIGN KEY (dirid) REFERENCES direction(di' at line 6

Неактивен

 

#6 19.08.2009 17:04:22

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как связать таблицы в Mysql

вместо unitid(10) not null,  должно быть unitid int(10) not null,

Неактивен

 

#7 19.08.2009 17:08:50

oleg999
Завсегдатай
Зарегистрирован: 19.08.2009
Сообщений: 48

Re: Как связать таблицы в Mysql

Спасибо, уже разобрался.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson