Страница 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 писал(а):У меня произошло переименование поля
Перекомпиляция всей схемы базы.