tag:blogger.com,1999:blog-2844930384971606943.post3203738855321143827..comments2023-10-10T00:06:53.719+08:00Comments on 阿布洛格: 在 Oracle 中實作自動遞增欄位 (Oracle AUTO_INCREMENT)布萊恩http://www.blogger.com/profile/02115159631030535371noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-2844930384971606943.post-6061635425353690882009-09-04T23:02:24.764+08:002009-09-04T23:02:24.764+08:00匿名先生/小姐:
以這個 trigger 的語法,應該不致於發生所有 NULL 欄位都被填入 sq_...匿名先生/小姐:<br />以這個 trigger 的語法,應該不致於發生所有 NULL 欄位都被填入 sq_pm_form_id.NEXTVAL 的情況。因為它就指定取得的 sq_pm_form_id.NEXTVAL assign 給 NULL 狀態的 pm_form_define.pm_form_id。<br /><br />可以 show 你的 table DDL 跟 INSERT 的 DML 給我看嗎?(敏感欄位/資料請逕自移除, 給我看有問題的部份即可)<br />or 你有足夠的權限,就先搞個小 table 自行測試一下它的行為也是釐清問題不錯的方式。布萊恩https://www.blogger.com/profile/02115159631030535371noreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-33171959437197586532009-09-04T12:28:54.091+08:002009-09-04T12:28:54.091+08:00CREATE OR REPLACE TRIGGER trg_PM_FORM_DEFINE
BE...CREATE OR REPLACE TRIGGER trg_PM_FORM_DEFINE <br /> BEFORE INSERT ON PM_FORM_DEFINE <br /> FOR EACH ROW<br />BEGIN <br /> IF :new.PM_FORM_ID IS NULL THEN <br /> SELECT SQ_PM_FORM_ID.nextval INTO :new.PM_FORM_ID FROM dual; <br /> END IF; <br /> END;<br />/<br />這是我的squenceAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-90831044429646244092009-09-04T10:41:26.683+08:002009-09-04T10:41:26.683+08:00請問我現在遇到一個問題,我在設好自動遞增好,該張table在insert時的確會自動遞增,但問題來了...請問我現在遇到一個問題,我在設好自動遞增好,該張table在insert時的確會自動遞增,但問題來了,他把我所有insert時沒填值(null)的欄位全都自動遞增一個號碼了。但其實,我只想遞增PK欄位(ID →流水號)。有辦法限定只遞增某個欄位嗎?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-16092964464877223192009-04-16T15:14:00.000+08:002009-04-16T15:14:00.000+08:00感謝布萊恩的分享!
我的SQL都是很簡單的, 反而是OCI的使用讓我比較困擾,
和MySQL及SQL...感謝布萊恩的分享!<br />我的SQL都是很簡單的, 反而是OCI的使用讓我比較困擾,<br />和MySQL及SQLServer的API比起來, OCI顯得囉嗦許多.<br /><br />一句簡單的SQL, 我要寫三個版本給MySQL,SQLServer和<br />Oracle用,再各自用C API去執行SQL.<br /><br />貨比三家, Oracle最讓人頭大, 為了Oracle的AUTO_INCREMENT,<br />三千煩惱絲掉了一千五, 好險在您這兒找到了RETURNING,<br />餘下的一千五還在我腦袋瓜上, 真是感謝您!<br /><br />小弟在網路上的代號是IRON, 您就姑且這麼呼我吧Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-70118312586050516922009-04-16T00:27:00.000+08:002009-04-16T00:27:00.000+08:00匿名先生/小姐:
再與您分享,如果 DB 環境允許,包成 Package/Procedure 來叫用...匿名先生/小姐:<br />再與您分享,如果 DB 環境允許,包成 Package/Procedure 來叫用,用 out 參數把 id return 出來,即便是在 AP 僅能或僅想用 OCI 介面實作的時候,也可以靈活應用 Oracle 的相關功能與實作,而 AP 也不致於因為包含了太多邏輯而造成閱讀與維護上的困擾。<br /><br />不知道為啥,看到 OCI 我就聯想到直接把一些邏輯用的 SQL 寫在 AP 裡的景況,所以就回了這段…分享分享…希望是我多心了…請多海涵…^^"布萊恩https://www.blogger.com/profile/02115159631030535371noreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-56443108173045036152009-04-15T14:43:00.000+08:002009-04-15T14:43:00.000+08:00受益良多, 尤其是RETURNING的使用,
如此我就可以用OCI(Oracle Call Inte...受益良多, 尤其是RETURNING的使用,<br />如此我就可以用OCI(Oracle Call Interface)實作<br />MySQL的LAST_INSERT_ID功能了Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-34521572844426593052009-03-22T02:26:00.000+08:002009-03-22T02:26:00.000+08:00To 樓上匿名的先生/小姐:等你有能力看懂我上頭寫的是啥了再來指教比較不會鬧笑話…To 樓上匿名的先生/小姐:<BR/>等你有能力看懂我上頭寫的是啥了再來指教比較不會鬧笑話…布萊恩https://www.blogger.com/profile/02115159631030535371noreply@blogger.comtag:blogger.com,1999:blog-2844930384971606943.post-45940000475592710432009-03-17T10:38:00.000+08:002009-03-17T10:38:00.000+08:00用Oracle 的 Sequences 就可以啦..要遞增或遞減都可以, 不用這麼麻煩...用Oracle 的 Sequences 就可以啦..<BR/><BR/>要遞增或遞減都可以, 不用這麼麻煩...Anonymousnoreply@blogger.com