|
|
|
поможите, люди добрые.. не пойму в чем фишка..
|
|||
|---|---|---|---|
|
#18+
Имеются две баз и триггер следующего вида: CREATE TRIGGER ADD_ACTIV1 FOR APPLE AFTER INSERT POSITION 0 AS DECLARE VARIABLE CNT INTEGER; DECLARE VARIABLE OLD_CNT INTEGER; BEGIN SELECT COUNT(*) FROM ACTIV1 WHERE ACTIV1.NAIM = NEW.NAME AND ACTIV1.PABA = NEW.PABA AND ACTIV1.SUF = NEW.SUF AND ACTIV1.PREF = NEW.PREF INTO : CNT; IF (( :CNT = 0) AND ( (NEW.TIPS = 'LH') OR (NEW.TIPS = 'LA') OR (NEW.TIPS = 'LM') OR (NEW.TIPS = 'L0') OR (NEW.TIPS = 'LQ') OR (NEW.TIPS = 'L4') or (new.tips = 'L2') )) THEN INSERT INTO ACTIV1 (TIP_SCH,NAIM, NOM, PREF, PABA, SUF ,OST_CH, DATE_VIDACH, KRED_DEN, POGASH_DEN, SCH_KLIENTA,SCH_RETHERV,PROC_STAV, VALUTA, VOST,adig,sum_kr,bal_pz, uplach, nachisl_peni, UPL_PEN, STAVKS_PEN, SUM_OB, SUMS_POGASH,NACHISL) VALUES ( NEW.TIPS, NEW.NAME, GEN_ID(ACTIV_NOM , 1), NEW.PREF, NEW.PABA, NEW.SUF, NEW.OST, NEW.DATE_P, NEW.DEBV, NEW.KREDV, '0000000000000','0000000000000','0', NEW.VAL, NEW.OSTV,'0',new.ostv,new.bsch, '0', '0', '0', '0', '0','0','0'); ELSE BEGIN UPDATE ACTIV1 SET OST_CH = NEW.OST, KRED_DEN = NEW.DEB, POGASH_DEN = NEW.KRED, vost = new.ostv WHERE ACTIV1.NAIM = NEW.NAME AND ACTIV1.PABA = NEW.PABA AND ACTIV1.SUF = NEW.SUF AND ACTIV1.PREF = NEW.PREF; END Как видно из текста, тригер смотрит поступающие записи для apple , если такая запись есть в activ1 то он её обновляет, если нет, то добавляет. Засада в том что некоторые записи после продолжительного срока работы в activ1 задваиваются, если activ1 отчистить от записей и заполнить заново, то задвоения исчезают. Мож у кого есть какие нибудь советы или соображения?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 15:31 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=523&tid=1580693]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 297ms |

| 0 / 0 |
