Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите плз. замучался совсем с вставкой / 7 сообщений из 7, страница 1 из 1
08.06.2006, 08:45
    #33779393
Stan Marsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
БД: Sybase ASA 9.0.2
Есть таблица в БД target, есть временная таблица #tmp
на таблице target - стоит триггер BEFORE INSERT
который фильтрует данные вставляемые из #tmp в target.
триггер :
...
if field_1 = 0 then
rollback trigger;
end if;
...
т.е. если нас не устраивает условие то rollback trigger;

начинаю вставку типа
insert into target (field_1,field_2,field_3)
select field_1,field_2,field_3 from #tmp
нифига - 0 rows inserted, а если

insert into target (field_1,field_2,field_3)
select field_1,field_2,field_3 from #tmp
where field_2 = 'my' - вставляются записи :) ... триггер отрабатывает
в таблице #tmp = 300000 записей

КАК ЛЕЧИТЬ? В чем ДЕЛО?
...
Рейтинг: 0 / 0
08.06.2006, 09:48
    #33779539
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
Не очень понятно, что Вы хотите. Во первых ROLLBACK TRIGGER в отличие от ROLLBACK откатывает не всю транзакцию, а только действия, производимые внутри триггера. Если после выполнения ROLLBACK TRIGGER не указана команда возврата ошибки RAISERROR, то операция над таблицей будет просто молча выполнена. Обьясните суть задачи, есть подозрение, что Вы не по назначению используете ROLLBACK TRIGGER.

--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
08.06.2006, 09:53
    #33779553
Stan Marsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
Да просто триггером обрабатывать записи которые в таблицу приходят, а те которые не прошли по какому либо условию - просто не вносить в таблицу.
И почемуто подумалось что триггером BEFORE INSERT это делать удобнее.
...
Рейтинг: 0 / 0
08.06.2006, 09:57
    #33779564
Stan Marsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
просто фильтровать вставляемые данные триггером BEFORE INSERT, т.е. если условие не выполнено - просто откатывать вставку записи ...
...
Рейтинг: 0 / 0
08.06.2006, 10:42
    #33779706
grach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
примерно так?

Код: plaintext
1.
2.
3.
declare err_tr exception for sqlstate value '99999';
  if field_1 =  0  then
    signal err_tr
  end if
...
Рейтинг: 0 / 0
08.06.2006, 12:35
    #33780238
old_joy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
Stan Marsh
Изначально неверный подход. Вы на insert пытаетесь сделать delete, выполнив rollback.
...
Рейтинг: 0 / 0
08.06.2006, 18:10
    #33781635
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите плз. замучался совсем с вставкой
Вообще-то такие задачи надо решать через сheck.
Код: plaintext
1.
2.
3.
4.
Create table target (
    ....
    field_1 integer check (field_1 <>  0 ),
    ...
);
И никакие триггера не нужны совсем.

---
http://www.rusug.ru] Портал рускоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите плз. замучался совсем с вставкой / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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