我試圖更新一些現有的代碼,應該通過ODBC將數據寫入各種數據庫(SQL,Access,Oracle),但我遇到了一些Oracle問題,我正在尋找任何建議。ODBC與Oracle觸發鍵列
我已經使用Trigger(在線基礎教程,我希望支持)設置我的Oracle數據庫。
CREATE TABLE TABLE1 (
RECORDID NUMBER NOT NULL PRIMARY KEY,
ID VARCHAR(40) NULL,
COUNT NUMBER NULL
);
GO
CREATE SEQUENCE TABLE1_SEQ
GO
CREATE or REPLACE TRIGGER TABLE1_TRG
BEFORE INSERT ON TABLE1
FOR EACH ROW
WHEN (new.RECORDID IS NULL)
BEGIN
SELECT TABLE1_SEQ.nextval
INTO :new.RECORDID
FROM dual;
end;
GO
然後我使用SELECT * FROM TABLE1
填充DataTable。第一個問題是這個DataTable不知道RecordId列是自動生成的。如果我在表中有數據,那麼,因爲我得到一個錯誤
不能與type「雙師型」改變的DataColumn的自動遞增一旦 有數據我不能改變它。
如果我繼續,忽略這一點,那麼我很快就會陷入困境。如果我創建一個新的DataRow並嘗試插入它,我不能將RecordID設置爲DBNull.Value,因爲它抱怨該列必須是非空值(NoNullAllowedException)。然而,我不能自己產生一個值,因爲我不知道我應該使用什麼值,也不想通過使用下一個可用值來搞砸觸發器。
有關如何在沒有ODBC抱怨的情況下插入數據的任何建議?
在WHEN子句中'new'之前不應該有冒號嗎? –