隨筆-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 閱讀(666) 評論(0)  編輯  收藏 所屬分類: 工作
          主站蜘蛛池模板: 华阴市| 茂名市| 额尔古纳市| 岳普湖县| 红河县| 南和县| 沂水县| 徐闻县| 双牌县| 安仁县| 邳州市| 武义县| 通州区| 雷波县| 鄄城县| 高尔夫| 石泉县| 萍乡市| 海兴县| 新兴县| 石嘴山市| 兴宁市| 平遥县| 虞城县| 陵川县| 郧西县| 江华| 桦南县| 精河县| 定兴县| 岱山县| 余江县| 筠连县| 治多县| 托克逊县| 彰化市| 永胜县| 潞西市| 雅安市| 聊城市| 嘉祥县|