триггер

buBBle
Дата: 03.11.2005 12:00:40
Добрый день!

Возможно ли в триггере на вставку сделать следующее:
Если данных с такой датой нет то производить вставку,
а если есть, делать апдейт, и ничего не вставлять?
VF
Дата: 03.11.2005 12:02:47
можно...
VF
Дата: 03.11.2005 12:03:34
но может стоит делать триггер не только на вставку но и на изменение???
buBBle
Дата: 03.11.2005 12:11:43
вот код, не работает:

CREATE TRIGGER table_BI0 FOR table
ACTIVE BEFORE INSERT POSITION 0
as
begin



   new.ID = gen_id(T_ID, 1);
   NEW.MOD_TIME = 'now';
   if (exists(select ID from TABLE where ID = new.ID)) then
     begin
       update TABLE set
        NAME = new.NAME,
        QUANTITY = new.QUANTITY
       where ID = new.ID;
     end
  else
     begin
       insert into TABLE (
        ID,
        NAME
        QUANTITY)
       values (
        new.ID,
        new.NAME
        new.QUANTITY);
     end
     
end


Пишет:
Too many concurrent executions of the same request
.
Too many concurrent executions of the same request.
buBBle
Дата: 03.11.2005 12:12:59
Может, потому что я вставку в триггере на вставку делаю?

FB 1.5 embedded
Карабас Барабас
Дата: 03.11.2005 12:15:23
Может тебе лучше вьюху сделать updateable ?

Posted via ActualForum NNTP Server 1.3

VF
Дата: 03.11.2005 12:16:11
NEW.MOD_TIME = 'now';
зачем?
VF
Дата: 03.11.2005 12:17:34
buBBle
Может, потому что я вставку в триггере на вставку делаю?

FB 1.5 embedded

а зачем делать на триггере на вставку вставку в ту же самую таблицу? может after триггер поможет???
SAMZ
Дата: 03.11.2005 12:21:51
Проверять есть или нет записи с ТАКОЙ датаой я бы стал на клиенте. Что касается insert в тригере beforinsert , то это как мне кажется приведет к рекурсивному зацикливанию и ничего хорошего не даст
VF
Дата: 03.11.2005 12:27:20
кстати и after insert тоже к зацикливанию приведёт...