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 閱讀(486) 評論(0)  編輯  收藏 所屬分類: java 開發
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 瓦房店市| 延吉市| 阿克| 文水县| 焦作市| 桃园市| 临邑县| 讷河市| 丹凤县| 青田县| 富顺县| 马龙县| 平凉市| 张家川| 湾仔区| 义乌市| 霍州市| 鸡泽县| 甘谷县| 类乌齐县| 玉门市| 南岸区| 济源市| 扬州市| 伊宁市| 镇平县| 余姚市| 黔西| 余江县| 苗栗县| 长垣县| 清河县| 加查县| 岳池县| 三门峡市| 辽宁省| 习水县| 乌兰浩特市| 长汀县| 永靖县| 曲麻莱县|