2013-12-15 71 views
0

我創建了一個觸發器,它的作用就像當我在一個表中更新/插入一行時,插入的行將在另一個包含主鍵的表中完成。 現在,當我在第一個表中插入一行時,我希望觸發器檢查另一個表的主鍵的最後一個值,如果該值爲空或' - ',那麼我必須將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,所以如果該值爲null或「 - 」插入B_ID爲1,接着上面的INSERT語句在同一行。

任何幫助將不勝感激,儘快。由於提前,有沒有人有沒有辦法解決這個... :(

+1

如何將一個主鍵具有空值? –

回答

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;​