<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0
    原文地址: http://meetrice.javaeye.com/blog/89426

    MySQL
    自增長與Oracle序列的區(qū)別:
    自增長只能用于表中的其中一個字段
    自增長只能被分配給固定表的固定的某一字段,不能被多個表共用.
    自增長會把一個未指定或NULL值的字段自動填上.

    mysql中添加序列,請看下面的實(shí)例:
    MYSQL里有這樣一張表:
    Java代碼 復(fù)制代碼
    1. CREATE TABLE Movie(   
    2. id           INT NOT NULL AUTO_INCREMENT,   
    3. name     VARCHAR(60) NOT NULL,   
    4. released YEAR NOT NULL,   
    5. PRIMARY KEY (id)   
    6. ) ENGINE=InnoDB;  

    Java代碼 復(fù)制代碼
    1. INSERT INTO Movie (name,released) VALUES ('Gladiator',2000);   
    2. INSERT INTO Movie (id,name,released) VALUES (NULL,'The Bourne Identity',1998);  

    在ORACLE是這樣的:
    Java代碼 復(fù)制代碼
    1. CREATE TABLE Movie(   
    2. id          INT NOT NULL,   
    3. name     VARCHAR2(60) NOT NULL,   
    4. released INT NOT NULL,   
    5. PRIMARY KEY (id)   
    6. );   
    7. CREATE SEQUENCE MovieSeq;  

    Java代碼 復(fù)制代碼
    1. INSERT INTO Movie (id,name,released) VALUES (MovieSeq.NEXTVAL,'Gladiator',2000);  


    在oracle下為表添加一個觸發(fā)器,就可以實(shí)現(xiàn)mysql自增長功能:
    Java代碼 復(fù)制代碼
    1. CREATE OR REPLACE TRIGGER BRI_MOVIE_TRG   
    2. BEFORE INSERT ON Movie   
    3. FOR EACH ROW   
    4. BEGIN   
    5.   SELECT MovieSeq.NEXTVAL INTO :new.id FROM DUAL;   
    6. END BRI_MOVIE_TRG;   
    7. .   
    8. RUN;  

    這樣,插件記錄就可以成為MYSQL風(fēng)格:
    Java代碼 復(fù)制代碼
    1. INSERT INTO Movie (name,released) VALUES ('The Lion King',1994);  


    下面我們來看看如何在mysql數(shù)據(jù)里使用Oracle序列語法.NEXTVAL 和 .CURVAL.
    我們假設(shè)在mysql中序列的語法是:

      NEXTVAL(’sequence’);
      CURRVAL(’sequence’);
      SETVAL(’sequence’,value);


    下面就是CURRRVAL的實(shí)現(xiàn)方案:

    Java代碼 復(fù)制代碼
    1. DROP TABLE IF EXISTS sequence;   
    2. CREATE TABLE sequence (   
    3. name              VARCHAR(50) NOT NULL,   
    4. current_value INT NOT NULL,   
    5. increment       INT NOT NULL DEFAULT 1,   
    6. PRIMARY KEY (name)   
    7. ) ENGINE=InnoDB;   
    8. INSERT INTO sequence VALUES ('MovieSeq',3,5);   
    9. DROP FUNCTION IF EXISTS currval;   
    10. DELIMITER $   
    11. CREATE FUNCTION currval (seq_name VARCHAR(50))   
    12. RETURNS INTEGER   
    13. CONTAINS SQL   
    14. BEGIN   
    15.   DECLARE value INTEGER;   
    16.   SET value = 0;   
    17.   SELECT current_value INTO value   
    18.   FROM sequence   
    19.   WHERE name = seq_name;   
    20.   RETURN value;   
    21. END$   
    22. DELIMITER ;  

    測試一下結(jié)果:
    Java代碼 復(fù)制代碼
    1. mysql> SELECT currval('MovieSeq');   
    2. +---------------------+   
    3. | currval('MovieSeq') |   
    4. +---------------------+   
    5. |                   3 |   
    6. +---------------------+   
    7. 1 row in set (0.00 sec)   
    8. mysql> SELECT currval('x');   
    9. +--------------+   
    10. | currval('x') |   
    11. +--------------+   
    12. |            0 |   
    13. +--------------+   
    14. 1 row in set, 1 warning (0.00 sec)   
    15. mysql> show warnings;   
    16. +---------+------+------------------+   
    17. | Level   | Code | Message          |   
    18. +---------+------+------------------+   
    19. | Warning | 1329 | No data to FETCH |   
    20. +---------+------+------------------+   
    21. 1 row in set (0.00 sec)  


    nextval

    Java代碼 復(fù)制代碼
    1. DROP FUNCTION IF EXISTS nextval;   
    2. DELIMITER $   
    3. CREATE FUNCTION nextval (seq_name VARCHAR(50))   
    4. RETURNS INTEGER   
    5. CONTAINS SQL   
    6. BEGIN   
    7.    UPDATE sequence   
    8.    SET          current_value = current_value + increment   
    9.    WHERE name = seq_name;   
    10.    RETURN currval(seq_name);   
    11. END$   
    12. DELIMITER ;  


    Java代碼 復(fù)制代碼
    1. mysql> select nextval('MovieSeq');   
    2. +---------------------+   
    3. | nextval('MovieSeq') |   
    4. +---------------------+   
    5. |                  15 |   
    6. +---------------------+   
    7. 1 row in set (0.09 sec)   
    8.   
    9. mysql> select nextval('MovieSeq');   
    10. +---------------------+   
    11. | nextval('MovieSeq') |   
    12. +---------------------+   
    13. |                  20 |   
    14. +---------------------+   
    15. 1 row in set (0.01 sec)   
    16.   
    17. mysql> select nextval('MovieSeq');   
    18. +---------------------+   
    19. | nextval('MovieSeq') |   
    20. +---------------------+   
    21. |                  25 |   
    22. +---------------------+   
    23. 1 row in set (0.00 sec)  


    setval
    Java代碼 復(fù)制代碼
    1. DROP FUNCTION IF EXISTS setval;   
    2. DELIMITER $   
    3. CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)   
    4. RETURNS INTEGER   
    5. CONTAINS SQL   
    6. BEGIN   
    7.    UPDATE sequence   
    8.    SET          current_value = value   
    9.    WHERE name = seq_name;   
    10.    RETURN currval(seq_name);   
    11. END$   
    12. DELIMITER ;  


    Java代碼 復(fù)制代碼
    1. mysql> select setval('MovieSeq',150);   
    2. +------------------------+   
    3. | setval('MovieSeq',150) |   
    4. +------------------------+   
    5. |                    150 |   
    6. +------------------------+   
    7. 1 row in set (0.06 sec)   
    8.   
    9. mysql> select curval('MovieSeq');   
    10. +---------------------+   
    11. | currval('MovieSeq') |   
    12. +---------------------+   
    13. |                 150 |   
    14. +---------------------+   
    15. 1 row in set (0.00 sec)   
    16.   
    17. mysql> select nextval('MovieSeq');   
    18. +---------------------+   
    19. | nextval('MovieSeq') |   
    20. +---------------------+   
    21. |                 155 |   
    22. +---------------------+   
    23. 1 row in set (0.00 sec)  
    posted on 2010-03-09 10:25 周銳 閱讀(1127) 評論(0)  編輯  收藏 所屬分類: MySQL
    主站蜘蛛池模板: 最新国产精品亚洲| 一级毛片试看60分钟免费播放| GOGOGO高清免费看韩国| 毛片a级毛片免费播放下载| 久久精品国产精品亚洲精品| 亚洲Av永久无码精品一区二区| 久久国产免费观看精品3| 亚洲人午夜射精精品日韩| 亚洲国产日韩综合久久精品| 久章草在线精品视频免费观看| av无码东京热亚洲男人的天堂| 亚洲制服丝袜中文字幕| 美女在线视频观看影院免费天天看| 国产aa免费视频| 456亚洲人成影院在线观| 99爱视频99爱在线观看免费| 久久99亚洲综合精品首页| 亚洲AV色无码乱码在线观看| 日本片免费观看一区二区| 久久亚洲国产欧洲精品一| 九九九精品视频免费| 日韩免费一级毛片| 亚洲 欧洲 视频 伦小说| 69免费视频大片| 久久亚洲国产伦理| 两性色午夜免费视频| 亚洲国产精品综合久久一线| 亚洲精品无码你懂的| 国产一卡2卡3卡4卡无卡免费视频| 亚洲AV本道一区二区三区四区| 亚欧国产一级在线免费| 免费一级毛片一级毛片aa| 亚洲AV无码资源在线观看| 成年女人18级毛片毛片免费| 亚洲人成电影院在线观看| 69视频在线观看高清免费| 亚洲五月六月丁香激情| 暖暖日本免费中文字幕| 久久国产精品亚洲一区二区| 在线免费观看伊人三级电影| 国产AV无码专区亚洲AWWW|