隨筆-40  評論-66  文章-0  trackbacks-0

          一直都是用sql server作為開發數據庫,最近因為開發新的項目使用oracle數據庫,我才開始學習oracle.
          學習了一段時間,發現SQL Server和Oracle還是有這很大的差別。首先,我在SQL Server中用得很順手的自增長字段就在ORACLE中找不到了,朋友說可以用序列可以實現,于是查閱資料,整理出如下示例:


          方法一

          1.建立測試數據表
          CREATE TABLE TEST
          (
          ?ID?NUMBER,
          ?NAME?VARCHAR2(20),
          ?PRIMARY KEY(ID)
          );

          2.創建序列
          CREATE SEQUENCE SEQ_TEST;

          3.創建觸發器
          CREATE OR REPLACE TRIGGER AUTOINCREMENT
          BEFORE INSERT ON TEST
          FOR EACH ROW
          WHEN (NEW.ID IS NULL)
          BEGIN
          SELECT SEQ_TEST.NEXTVAL INTO :NEW.ID FROM DUAL;
          END;
          /

          4.插入數據
          INSERT INTO TEST(NAME) VALUES('NAME1');

          5.查看插入結果
          SELECT * FROM TEST;



          方法二


          SQL ? Server,Sybase: ?
          ? 有個identity屬性可以讓系統自動增1 ?
          ? create ? table ? a ?
          ? ( ?
          ? a1 ? int ? identity(1,1), ?
          ? a2 ? varchar(6) ?
          ? )???
          ? 然后在insert時: ?
          ? insert ? into ? a ? values('hello!'); --不用管a1,系統會自動增1 ?
          ? ?
          ? Oracle: ?
          ? 使用SEQUENCE(序列)可以達到要求 ?
          ? create ? table ? a ?
          ? ( ?
          ? a1 ? int ? , ?
          ? a2 ? varchar2(6) ?
          ? ); ?
          ? ?
          ? create ? SEQUENCE ? seq_a ? ? INCREMENT ? BY ? 1;???
          ????
          ? 然后在insert時: ?
          ? insert ? into ? a ? values(seq_a.nextval,'hello!'); --seq_a.nextval是該序列的下個值

          posted on 2006-11-20 00:39 Super·shen BLOG 閱讀(678) 評論(0)  編輯  收藏 所屬分類: 工作
          主站蜘蛛池模板: 襄汾县| 盖州市| 礼泉县| 台东县| 威宁| 鸡东县| 汨罗市| 武定县| 德安县| 平乐县| 海兴县| 台中县| 瓦房店市| 平和县| 濮阳县| 楚雄市| 茂名市| 龙南县| 永济市| 女性| 阿克苏市| 广水市| 漳平市| 紫阳县| 伽师县| 花莲市| 陇南市| 新宁县| 贡山| 钟祥市| 平定县| 四会市| 牟定县| 柏乡县| 罗田县| 永顺县| 桂东县| 自治县| 祥云县| 嘉黎县| 宝兴县|