Страница 1 из 1

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

Добавлено: 06 фев 2007, 08:50
avenger
Привет всем!

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

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

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 и и узнал, что сдесь кроется ошибка.

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

Добавлено: 06 фев 2007, 08:58
Dimitry Sibiryakov
А что, FB1.5 на это ругается?

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

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

Добавлено: 06 фев 2007, 09:39
Dimitry Sibiryakov
А на мой взгляд - совершенно зря. Стандартный поиск подходящего контекста предусматривает подъем по уровням, ЕМНИП.

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

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

Добавлено: 06 фев 2007, 16:59
WildSery
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

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