2011-07-18 97 views
4

我正在編寫Oracle觸發器。該觸發器應自動將列「productId」的值設置爲剛剛插入的行的oid。用於自動設置列值的Oracle SQL觸發器

我寫的觸發是:

create or replace trigger MyProduct_id_trg 
after insert on MyProduct 
begin 
    update MyProduct set productId = inserted.oid where oid = inserted.oid; 
end; 

但是,這是行不通的。

有人可以幫助我嗎?

問候。

回答

11

看起來您正嘗試在Oracle數據庫上使用SQL Server語法!試試這個:

create or replace trigger MyProduct_id_trg 
before insert on MyProduct 
for each row 
begin 
    :new.productId := :new.oid; 
end; 

(注:以前沒有後,與for each row。)

+0

嗨。謝謝回覆。這似乎並不奏效。 – Kevin

+0

對不起。忘了提及productId是一個varchar2而oid是int。我需要做一些類型轉換嗎? – Kevin

+0

@Kevin - 將存在隱式轉換(如果產品ID不是完美的數字,將會產生錯誤),但總是建議您在需要時將其明確轉換。另外,如果你總是在那裏存儲一個數字,WHY是產品ID varchar2? –