posts - 122,  comments - 25,  trackbacks - 0

          對于任何數據庫來說,提供唯一標識數據表中一行記錄的能力是至關重要的。幾乎所有數據庫都提供了為新添加的行自動生成主鍵的方法。這樣再操作數據庫的時候比較方便,但它也帶來了一個問題,如果我們需要知道新生成的主鍵值該怎么辦?

          有的數據庫供應商是預先生成(pre-generate)主鍵的(如OraclePostgreSQL),有的則是事后生成(post-generate)的(如SQL ServerMySQL)。不管是哪種方式,我們都可以使用<selectKey>節點來獲取<insert>語句所產生的主鍵。下面的例子演示了這兩種方式下的做法:

          <!-- Oracle SEQUENCE Example using .NET 1.1 System.Data.OracleClient -->
          <insert id="insertProduct-ORACLE" parameterClass="product">
              
          <selectKey resultClass="int" type="pre" property="Id" >
                  SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL
              
          </selectKey>
              insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)
          </insert>

          <!-- Microsoft SQL Server IDENTITY Column Example -->
          <insert id="insertProduct-MSSQL" parameterClass="product">
              insert into PRODUCT (PRD_DESCRIPTION)
              values (#description#)
              
          <selectKey resultClass="int" type="post" property="id" >
                  select @@IDENTITY as value
              
          </selectKey>
          </insert>

          <!-- MySQL Example -->
          <insert id="insertProduct-MYSQL" parameterClass="product">
              insert into PRODUCT (PRD_DESCRIPTION)
              values (#description#)
              
          <selectKey resultClass="int" type="post" property="id" >
                  select LAST_INSERT_ID() as value
              
          </selectKey>
          </insert>

          posted on 2008-08-01 14:44 josson 閱讀(479) 評論(0)  編輯  收藏 所屬分類: java 開發
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上蔡县| 元朗区| 务川| 丰都县| 冀州市| 北流市| 长乐市| 延津县| 杭锦后旗| 普兰县| 噶尔县| 确山县| 临安市| 清丰县| 寻甸| 新龙县| 盐山县| 黄龙县| 龙泉市| 西林县| 铁岭市| 兴业县| 文安县| 沭阳县| 禄丰县| 特克斯县| 公安县| 兴业县| 拉孜县| 达孜县| 临夏市| 镇原县| 达尔| 思南县| 博白县| 沅江市| 丰县| 武川县| 两当县| 揭东县| 庆云县|