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