Firebird Stored procedure的設計方式 |
答題得分者是:RootKit
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
謝謝RootKit大的回覆
IBExpert 我是用CSDN上得到的版本(20090325) 我按下F1後會直接帶到IBExpert網站,所以沒辦法看到它的說明 註冊了好一陣子,怎麼樣也無法註冊,整個有傻眼到的感覺 ===================引 用 RootKit 文 章=================== 有好一陣子沒用,又有點健忘。... 記得直接寫就可以了,大概是... CREATE PROCEDURE DELETE_DATA( S_NO INTERGER) AS BEGIN DELETE FROM 學生資料表 where 學生id =:S_NO; DELETE FROM 課程表 where 學生id =:S_NO; SUSPEND; END; 可用 IBExpert 用法較簡單,語法還有提示。 說明也很清楚,很多東西都可以在上面查。 不過沒有安裝,所以就沒試了。 |
kadee
高階會員 發表:11 回覆:141 積分:165 註冊:2002-03-20 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
請問,不需要加「SUSPEND;」嗎?
這個指令在sp的場合似乎是一定要加的?不管有沒有回傳值皆是的樣子。 其實有想過要在主table上加入trigger,感覺很實用,能另外請教Trigger與Stored procedure的差異嗎? 另外,如果要再加上Update的話是不是也能這樣寫嗎? [code sql] CREATE TRIGGER triggername FOR talbe_name ACTIVE AFTER UPDATE AFTER DELETE POSITION 0 AS BEGIN IF(old.學生id <> new.學生id) THEN UPDATE 學生資料表 SET 學生id = new.學生id where 學生id =old.id; ELSE DELETE FORM 學生資料表 WHERE 學生id = old.學生id; END [/code] 判斷「AFTER UPDATE AFTER DELETE」的條件不知道是不是這樣寫 ===================引 用 kadee 文 章=================== 這部份應該在 主table 建 trigger CREATE TRIGGER triggername FOR table ACTIVE AFTER DELETE POSITION 0 AS begin DELETE FROM 學生資料表 where 學生id =old.id; end |
boyman
一般會員 發表:8 回覆:13 積分:9 註冊:2004-05-14 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
謝謝 boyman 大的幫忙,原來真正的網址是在那邊呀!受教了!內容寫得好詳盡,讚!
我後來是在 Destructor.de 上看到關於 Trigger以及Stored Procedure的相關內容 裡面有提到如果要合二為一時應該要怎麼做,但Before和After只能擇一。 可以利用Trigger Context Variables來判定使用場合。 又上了一課 ^____^ ===================引 用 boyman 文 章=================== ibexpert 網站的文件不用註冊就能看了 IBExpert Doc.StoredProcedure Trigger只有在資料異動時觸發 SP可以隨時呼叫,不只在資料庫中, 在軟體也可以。 AFTER UPDATE AFTER DELETE 不能這樣寫,分開吧 且 DELETE 時不能用 new.學生id |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |