oracle 是否有開欄位時是否有編號自動新增功能 |
尚未結案
|
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
|
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 我是建立了一個sequence . 他是為自動加1 .. 可是..我要跟某個Table 連在一起. 當我不輸入資料時他會自動 1 我是寫了一個 Tigger 但是系統說不行? Why? tigger如下 Create Tigger T_Account2 Before Insert On M_Account2 for each row begin M_Account2.D_Key=S_Account2.NextVal endcreate or replace trigger Test before insert on mytab for each row declare --- local variables here begin if :new.a1 is null then select seq1.nextval into :new.a1 from dual; end if; end Test; |
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
我照大哥的方式,把我的Tigger改了一下.
但是他一樣還是不會自動的增加.
是不是我還有寫錯的地方. from dual 是做什麼用的呢? create or replace trigger T_Account2
before insert on M_Account2
for each row
declare
begin if :New.D_Key is null then
select s_Account2.nextval into :New.D_Key from dual
end if end
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 我照大哥的方式,把我的Tigger改了一下. 但是他一樣還是不會自動的增加. 是不是我還有寫錯的地方. from dual 是做什麼用的呢? create or replace trigger T_Account2 before insert on M_Account2 for each row declare begin if :New.D_Key is null then select s_Account2.nextval into :New.D_Key from dual end if end1. 確定 Trigger 有編進 Oracle 2. 用 SQL Plus 直接下 SQL 寫資料進 Table, SQL>insert into M_Account2 ( a1, a2 ) values ( null, 'TEST' ); SQL>commit; 3.Dual 是 Oracle 的虛擬Table. |
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
引言: 會出現下面的錯誤訊息~ SQL> insert into M_Account2 values (null,'1',1,1); insert into M_Account2 values (null,'1',1,1) * ERROR 在行 1: ORA-04098: 觸發程式 'PROMAX.T_ACCOUNT2' 無效且無法重新驗證請先確定 Trigger 都沒寫錯, 且正確編進 Oralce. 你的 Trigger 有錯, 雖然被 Compile 進 Oracle, 可是狀態是 Invalid 的, 所以寫資料進 Table 觸發 Trigger 時, 會有這個錯誤訊息, 在 SQL Plus 下 , 下 Show Error 看寫的 Trigger 錯誤在那裏. |
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
以下是我的Tigger
CREATE TRIGGER PROMAX.T_ACCOUNT2 BEFORE INSERT
ON PROMAX.M_ACCOUNT2
FOR EACH ROW
declare
begin if :New.D_Key is null then
select s_Account2.nextval into :New.D_Key from dual
end if end 這是M_Account2 Table
CREATE TABLE PROMAX.M_ACCOUNT2 (
D_KEY NUMBER(10, 0) NOT NULL,
M_NO CHAR(7) NOT NULL,
M_KEY NUMBER(10, 0),
M_GET NUMBER(10, 0)
) 我在Sql plus 裡打Show error 他說 SQL> show error
沒有任何錯誤 為何會這樣呢? 令外我要由SQL plus 去看所有Tigger的名字..要如何去看呢? Vincent wei
|
OsX
版主 發表:6 回覆:151 積分:111 註冊:2003-05-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |