8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在 MySQL 中创建序列?

Kjartan 2月前

105 0

我正在尝试在 MySQL 中创建一个序列(我对 SQL 整体上非常陌生)。我正在使用以下代码,但它导致错误:CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;ORDID 指的是...

我正在尝试在 MySQL 中创建一个序列(我对 SQL 整体来说非常陌生)。我正在使用以下代码,但它会导致错误:

CREATE SEQUENCE ORDID INCREMENT BY 1 START WITH 622;

ORDID 指的是我正在使用的表中的一个字段。如何正确创建序列?

编辑:

据称,MySQL 不使用序列。我现在正在使用以下代码,但这也会导致错误。我该如何修复它们?

CREATE TABLE ORD (
ORDID NUMERIC(4) NOT NULL AUTO_INCREMENT START WITH 622,
//Rest of table code

编辑:

我想我找到了解决办法。对于 phpMyAdmin(我正在使用),您可以使用以下代码。

ALTER TABLE ORD AUTO_INCREMENT = 622;

我不知道它为什么喜欢这样,但如果其他人需要帮助,那么你可以去这里。:)

帖子版权声明 1、本帖标题:如何在 MySQL 中创建序列?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Kjartan在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • SEQUENCES like it works on firebird:

    -- ================================================== =======

    CREATE TABLE SEQUENCES  
    (  
      NM_SEQUENCE VARCHAR(32) NOT NULL UNIQUE,  
      VR_SEQUENCE BIGINT      NOT NULL  
    );  
    

    -- ================================================== =======
    -- 创建一个序列 sSeqName 并设置其初始值。
    -- ================================================== =======

    DROP PROCEDURE IF EXISTS CreateSequence;  
    
    DELIMITER :)  
    CREATE PROCEDURE CreateSequence( sSeqName VARCHAR(32), iSeqValue BIGINT )  
    BEGIN  
      IF NOT EXISTS ( SELECT * FROM SEQUENCES WHERE (NM_SEQUENCE = sSeqName) ) THEN  
        INSERT INTO SEQUENCES (NM_SEQUENCE, VR_SEQUENCE)  
        VALUES (sSeqName   , iSeqValue  );  
      END IF;  
    END :)  
    DELIMITER ;  
    
    -- CALL CreateSequence( 'MySequence', 0 );  
    

    -- ================================================== =======================
    -- 将 sSeqName 的序列值增加 iIncrement 并返回。
    -- 如果 iIncrement 为零,则返回 sSeqName 的当前值。
    -- ================================================== =======================

    DROP FUNCTION IF EXISTS GetSequenceVal;  
    
    DELIMITER :)  
    CREATE FUNCTION GetSequenceVal( sSeqName VARCHAR(32), iIncrement INTEGER )  
    RETURNS BIGINT  -- iIncrement can be negative  
    BEGIN  
      DECLARE iSeqValue BIGINT;  
    
      SELECT VR_SEQUENCE FROM SEQUENCES  
      WHERE  ( NM_SEQUENCE = sSeqName )  
      INTO   @iSeqValue;  
    
      IF ( iIncrement <> 0 ) THEN  
        SET @iSeqValue = @iSeqValue + iIncrement;  
    
        UPDATE SEQUENCES SET VR_SEQUENCE = @iSeqValue  
        WHERE  ( NM_SEQUENCE = sSeqName );  
      END IF;
    
      RETURN @iSeqValue;
    END :)  
    DELIMITER ;  
    
    -- SELECT GetSequenceVal('MySequence', 1);  -- Adds 1 to MySequence value and returns it.
    

    -- ================================================== ===================

返回
作者最近主题: