Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Внешние ключи (tigrisha) 01/10/2001 - 18:48:32
      Re: Внешние ключи (Al'Thor) 01/10/2001 - 19:17:27
      Re: Внешние ключи (Василий) 01/10/2001 - 19:26:43
      Re: Внешние ключи (tigrisha) 01/10/2001 - 19:43:41
      Re: Внешние ключи (Maxim) 01/10/2001 - 21:48:51

> Original message text:
> From: tigrisha - 01/10/2001 - 18:48:32
> Subject:Внешние ключи
> -----------------
> Добрый день!
>
> Я создаю две таблицы. Customers и Salespeople
>
> Salespeople - таблица продавцов
> CREATE TABLE Salespeople (snum INTEGER NOT NULL PRIMARY KEY,
> cname CHAR(10), city CHAR(10));
>
> Customers - таблица покупателей создаем так:
> CREATE TABLE Customers (cnum INTEGER NOT NULL PRIMARY KEY,
> cname CHAR(10), city CHAR(10), snum INTEGER,
> FOREIGN KEY (snum) REFERENCES Salespeople(snum));
>
> В таблице Customers snum становится внешним ключем ссылкой на snum таблицы Salespeople. Это должно не дать возможности прикреплять заказ к левому продавцу несуществующему в таблице Salespeople. Но почему то в таблицу Customers поле snum получается записывать номера несуществующих продавцов.
>
> Пожалуйста подскажите что я делаю неправильно :(
>


From: Al'Thor - 01/10/2001 - 19:17:27
Subject:Внешние ключи
-----------------
Наверное вы просто раньше пользовались Access'ом.
В MySQL к сожалению (а в каких-то случаях - к счастью) нет поддержки целостности таблиц. Т. е. да, вы можете добавлять куда угодно и что угодно, независимо от связей.

Если нужно контролировать - это нужно делать в ручную, по-другому никак, т.е. перед добавлением надо самостоятельно проверять, есть ли этот самый продавец?

Спешу успокоить - никаких проблем с производительностью здесь не будет! Скорее наоброт. Если Access всегда тратит время на проверку целостности, то вы можете проверять только тогда, когда это действительно нужно.

Конечно удобство программиста важно... но... В общем надо всегда выбирать - или скорость или удобство.

Да, читая ваш запрос споткнулся об слово REFERENCES. Споткнулся потому, что в MySQL оно хоть и является зарезервированным, но ничего не означает. Абсолютно ничего.

Зачем его добавили? Только для того, чтобы перенеся запрос с одной системы на другую его не пришлось переправлять.

В общем резюме:
REFERENCES не работает.
Проверки целостности автоматически нет.
Если нужна проверка - делайте её самостоятельно.



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
129



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |