2012-11-29 59 views
3

我試圖在我的Derby數據庫中創建Oracle的ORA_ROWSCN的粗略模擬。我使用Derby進行單元測試,因此測試人員不必安裝Oracle Express或類似的東西。所以我有一個看起來像這樣的陳述:如何在Derby中插入行之前設置列值?

CREATE TRIGGER 
my_table_bi NO CASCADE BEFORE 
INSERT ON my_table 
REFERENCING NEW AS NEW 
FOR EACH STATEMENT MODE DB2SQL 
NEW.ORA_ROWSCN = 1 

我最終想讓這個更復雜,但我想先讓它變得可能。我得到一個錯誤,說

Syntax error: Encountered "NEW" at line 6, column 5

我錯過了什麼?這甚至有可能嗎?

+0

我相信一般來說,是的。我相信它可能會抱怨你的新行的名字('NEW')。如果您重新命名參考,會發生什麼?此外,您只能在'行'觸發器中使用舊/新_row_引用,否則[文檔說您需要使用表引​​用](http://db.apache.org/derby/docs/10.1/ref/rrefsqlj43125的.html#rrefsqlj43125__sqlj54276) –

回答

0

我用它來模擬插入之前,可能會幫助你,如果它不是太晚。

DROP TRIGGER TRI_UPPER_FIRSTNAME_PERSONNES; 
CREATE TRIGGER TRI_UPPER_FIRSTNAME_PERSONNES 
AFTER INSERT ON PERSONNES 
REFERENCING NEW AS NEW 
FOR EACH ROW 
UPDATE PERSONNES SET FIRSTNAME_PER = UPPER(NEW.FIRSTNAME_PER) WHERE NEW.SID_PER = SID_PER; 
相關問題