2013-12-15 4 views
0

Я создал триггер, который работает, когда я обновляю/вставляю строку в одну таблицу, вставка строки будет выполнена в другой таблице, содержащей первичный ключ. Теперь, когда я вставляю строку в первую таблицу, я хочу, чтобы триггер проверял последнее значение первичного ключа другой таблицы, и если это null или '-', тогда я должен вставить 1 в этот столбец первичного ключа, чтобы вставьте оставшиеся значения. Я написал код следующим образом:триггер pl/SQL для вставки следующего значения

create or replace trigger "T1" 
AFTER 
insert or update on "buses" 
for each row  
begin 
-- Here I want to check the V_id on vehicles table, if that is null or '-' then insert V_id as 1 along with the below insert statement. 
if :NEW."b_key" is not null then 
INSERT INTO vehicles (b_KEY,B_NAME,ADDRESS_1,CITY,STATE,ZIP,PHONE,WEBSITE) VALUES (:new.b_KEY,:new.b_NAME,:new.ADDRESS_1,:new.CITY,:new.STATE,:new.ZIP,:new.PHONE,:new.WEBSITE); 
end if; 
end; 

Как найти последний b_id в таблице транспортных средств, так что, если это значение равно нулю или «-» вставить b_id как 1, а затем выше заявление вставки в том же ряду.

всякая помощь будет принята с благодарностью, как можно скорее. Спасибо заранее, Кто-нибудь там решить эту проблему ... :(

+1

Как первичный ключ имеет значение NULL? –

ответ

0

Добавив еще один триггер, мы можем сделать это следующим образом:

create or replace TRIGGER "B_VEHICLES" 
    before insert on "buses"    
    for each row 
declare b_number number; 
begin 
    select max(B_ID) into b_number from Vehicles; 

    if :OLD."B_ID" is null and b_number is null then 
    select 1 into :new."B_ID" from dual; 
else select b_number + 1 into :new."B_ID" from dual; 
    end if; 

end;​ 
Смежные вопросы