| şimal | 15.08.2005 - 16:56:32 |
| merhaba
country_code_2digit adinda bir tablom var I_NAME, TYPE iki kolonum var I_NAME e ülke isimleri BULGARIA(GSM) ROMANIA(PSTN) şeklinde giriliyor TYPE kısmında ise GSM yada PSTN bilgisi bulunması gerekiyor. I_NAME kolonuna BULGARIA(GSM) girilince TYPE kısmını otomatik GSM BULGARIA(PSTN) girilince TYPE kısmını otomatik PSTN verisi girecek bir trigger yazmak istiyorum. Bunun için create or replace trigger cc2digit_bir before insert or update on country_code_2digit referencing old as old new as new begin if :new.i_name like '%(PSTN)' then :new.type := 'PSTN'; else if :new.i_name like '%(GSM)' then :new.type := 'GSM'; end if; end; şeklinde yazdim ancak bunu TOAD da create edemiyorum çünkü :new için variables penceresini açıyor. benden bir değişken girmemi bekliyor. Bu olayi nasil çözebilirim. Triggeri nasil create edebilirim? Triggerim hataliysa nasil düzeltebilirim? kolay gelsin iyi günler... | |
| doganzorlu | 15.08.2005 - 19:46:34 |
| Selam
TOAD da iki mod vardır. Birisi script (F5) birisi de grid (Shift-F9).. F5 e basacaksınız.. Ayrıca aşağıdaki gibi bir kod yazarsanız yeni iletişim altyapıları geldiğinde kodu değiştirmeniz gerekmez. Aslında veritabanı tasarımı açısından şebeke diye bir tabloda da bununmasında yarar var aslında bu kodun ve bir goreign key ile bağlanmalı. Ama uğraşamam derseniz bilemem.... CREATE OR REPLACE TRIGGER cc2digit_bir BEFORE INSERT OR UPDATE ON country_code_2digit REFERENCING OLD AS OLD NEW AS NEW DECLARE nwidth NUMBER; BEGIN nwidth := INSTR (:NEW.i_name, ')') - INSTR (:NEW.i_name, '(') - 1; IF NVL (nwidth, 0) > 0 THEN :NEW.TYPE := SUBSTR (:NEW.i_name, INSTR (:NEW.i_name, '(') + 1, nwidth); END IF; END; işinizi görecektir. Kolay gelsin... | |
| şimal | 16.08.2005 - 09:14:22 |
| hata veriyor :(
Error on line 0 create or replace trigger cc2digit_bir before insert or update on country_code_ ORA-04082: NEW or OLD references not allowed in table level triggers | |
| şimal | 16.08.2005 - 11:26:41 |
| CREATE OR REPLACE TRIGGER cc2digit_bir
BEFORE INSERT OR UPDATE ON country_code_2digit REFERENCING OLD AS OLD NEW AS NEW for each row DECLARE nwidth NUMBER; BEGIN nwidth := INSTR (:NEW.i_name, ')') - INSTR (:NEW.i_name, '(') - 1; IF NVL (nwidth, 0) > 0 THEN :NEW.TYPE := SUBSTR (:NEW.i_name, INSTR (:NEW.i_name, '(') + 1, nwidth); END IF; END; for each row satırı eklenmeliymiş... | |