powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работат INSERT в цикле
19 сообщений из 19, страница 1 из 1
Не работат INSERT в цикле
    #40134576
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.
В процедуре есть вставка в другую таблицу в блоке for select.
Но ничего не вставляется, хотя, если тот же INSERT стоит перед блоком, то это работает.
Заранее спасибо.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134580
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

ошибка в строке 123
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134582
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает, когда эта процедура вызывается из триггера на удаление в другой таблице.
А когда напрямую её вызываю, то всё работает.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134586
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в эксперте есть пошаговый отладчик, жмакай Ф8 и смотри дошел ты 19 строки или не дошел.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134587
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек
Не работает, когда эта процедура вызывается из триггера на удаление в другой таблице.
А когда напрямую её вызываю, то всё работает.
Чтобы триггер после изменений гарантированно сработал надо сделать переконнект, см. кэширование метаданных.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134590
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyв эксперте есть пошаговый отладчик, жмакай Ф8 и смотри дошел ты 19 строки или не дошел.
Прошёл всю процедуру в отладчике - никаких ошибок.
Ivan_PisarevskyЧтобы триггер после изменений гарантированно сработал надо сделать переконнект, см. кэширование метаданных.
Это только в IBExpert так или в клиентской программе тоже?
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134591
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вангую, небось в for select ... insert .. suspend

А потом вызывается криво
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134597
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек
В процедуре есть вставка в другую таблицу в блоке for select.
Но ничего не вставляется, хотя, если тот же INSERT стоит перед блоком, то это работает.
Возможно, этот блок не выполняется, т.е. select не возвращает строк.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134599
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвангую, небось в for select ... insert .. suspend
Нет, без suspend.
Вызывается:
execute procedure имя_процедуры(...);
.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134601
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

если ты не понял, то тебя просят показать исходный код триггера и процедуры. Иначе можно гадать до посинения
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134602
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВозможно, этот блок не выполняется, т.е. select не возвращает строк.
Возвращает, я ж говорю, в отладчике проходил её - в блок заходит.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134603
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек
Это только в IBExpert так или в клиентской программе тоже?
Если ты триггер отредактировал в эксперте, то клиентскую программу надо перезапустить, чтобы измененный триггер сработал.

Джек
Нет, без suspend.
Вызывается
внутри фор селекта есть суспенд? фор селект перебирает хотя бы одну запись?
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134607
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггер:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CREATE OR ALTER trigger table_ad0 for table
active after delete position 0
AS
begin
  /* Trigger text */
  execute procedure proc(null, null, old.id, null);
end

Процедура:
create or alter procedure proc(
    p1 date = null,
    p2 date = null,
    p3 integer = null,
    p4 varchar(6) = null)
as
declare variable field1 integer;
... 
begin
  /* Procedure Text */
  
  --вот здесь работает
  insert into table_debug(field) values(:field1);

  for select t.field1, ...
      from table2 t
      left join table3...
      left join table4...
      ...
      where t.id=:p3
  into :field1,...
  do
  begin
    
    //а здесь не работает
    insert into table_debug(field) values(:field1);

  end

  exit;
end
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134615
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты серьёзно ожидаешь, что select тебе вернёт уже удалённые записи?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134621
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повеселил вечером, поднял настроение
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134624
Dimbuch®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джек,

Переделай на before delete

Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TRIGGER table_bd0 FOR table
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
  /* Trigger text */

END
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134632
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы серьёзно ожидаешь, что select тебе вернёт уже удалённые записи?..
Я об этом тоже думал, но потом посмотрел, что айдишник-то триггер передаёт в процедуру из уже удалённой записи.
И если триггер с процедурой в одной транзакции, то до конца выполнения процедуры удаление не закомичено.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134633
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimbuch®Переделай на before delete
Спасибо большое.
Помогло.
...
Рейтинг: 0 / 0
Не работат INSERT в цикле
    #40134644
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек
Dimitry SibiryakovТы серьёзно ожидаешь, что select тебе вернёт уже удалённые записи?..

Я об этом тоже думал, но потом посмотрел, что айдишник-то триггер передаёт в процедуру из уже удалённой записи.
И если триггер с процедурой в одной транзакции, то до конца выполнения процедуры удаление не закомичено.

и что с того что не закомичено? Транзакция всегда видит свои собственные изменения
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работат INSERT в цикле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 1 мин.
Пользователи онлайн (11): Анонимы (8), Google Bot, Yandex Bot 1 мин., Bing Bot 2 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]