Объясните мне поведение?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
avenger
Сообщения: 141
Зарегистрирован: 25 окт 2005, 11:53

Объясните мне поведение?

Сообщение avenger » 06 фев 2007, 08:50

Привет всем!

Есть процедура:

Код: Выделить всё

CREATE PROCEDURE SEARCH_WORDS_PACK 
as
BEGIN
  DELETE FROM SEARCH_WORDS SW
    WHERE NOT EXISTS(SELECT 1 FROM SEARCH_LINKS WHERE WORD_ID = SW.WORD_ID);
END
Вот думал все правильно. Ан нет. У меня нет поля WORD_ID в таблице SEARCH_LINK. Почему компилятор (FB2.0) не ругается, а пропускает данную процедуру? Благодаря FB1.5 и и узнал, что сдесь кроется ошибка.

С уважение Иван.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 фев 2007, 08:58

А что, FB1.5 на это ругается?

avenger
Сообщения: 141
Зарегистрирован: 25 окт 2005, 11:53

Сообщение avenger » 06 фев 2007, 09:11

Dimitry Sibiryakov писал(а):А что, FB1.5 на это ругается?
Да ругается, говорит WORD_ID не найден в таблице SEARCH_LINKS

На мой взгляд правильно ругается.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 06 фев 2007, 09:39

А на мой взгляд - совершенно зря. Стандартный поиск подходящего контекста предусматривает подъем по уровням, ЕМНИП.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 06 фев 2007, 11:26

Мне тоже кажется, что надо бы ругаться.
Вообще, зря всё ещё FB разрешает пользоваться полями без алиасов, если его объявили.
ИМХО надо так - раз объявил алиас, пользуйся. А не "либо только им, либо без ничего".
Может я и не прав, но сам грешу запросами без алиасов в коротких подзапросах, типа этого. И хотя с полями не ошибался ни разу пока, всё равно кажется спорным такое поведение.

avenger
Сообщения: 141
Зарегистрирован: 25 окт 2005, 11:53

Сообщение avenger » 06 фев 2007, 16:44

WildSery писал(а):И хотя с полями не ошибался ни разу пока, всё равно кажется спорным такое поведение.
У меня произошло переименование поля

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 06 фев 2007, 16:59

avenger писал(а):У меня произошло переименование поля

Код: Выделить всё

ALTER TABLE SEARCH_WORDS ALTER WORD_ID TO WORD_ID2;

This operation is not defined for system tables.
unsuccessful metadata update.
Column WORD_ID from table SEARCH_WORDS is referenced in SEARCH_WORDS_PACK

avenger
Сообщения: 141
Зарегистрирован: 25 окт 2005, 11:53

Сообщение avenger » 06 фев 2007, 23:15

WildSery писал(а):
avenger писал(а):У меня произошло переименование поля
Перекомпиляция всей схемы базы.

Ответить