복붙노트

[SQL] 어떻게 MySQL은 시퀀스를 만들려면 어떻게해야합니까?

SQL

어떻게 MySQL은 시퀀스를 만들려면 어떻게해야합니까?

나는 MySQL은 시퀀스 (I는 전체 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. ==============================

    1.이 문서를 확인하십시오. 나는 당신이 원하는 무엇을 얻을 수 있도록해야한다 생각합니다. 테이블이 이미 존재하고, 이미 데이터가있는 경우, 당신은 점점 오류가 이미 다른 기록을 위해 존재하는 값을 할당하려고 AUTO_INCREMENT 때문일 수 있습니다.

    이 문서를 확인하십시오. 나는 당신이 원하는 무엇을 얻을 수 있도록해야한다 생각합니다. 테이블이 이미 존재하고, 이미 데이터가있는 경우, 당신은 점점 오류가 이미 다른 기록을 위해 존재하는 값을 할당하려고 AUTO_INCREMENT 때문일 수 있습니다.

    이미 다른 사람이 그들이 생각하고 오라클에 처리로 의견 시퀀스에서 언급 한대로 즉, MySQL은 존재하지 않는다. 그러나, 당신은 가능성이 당신이 원하는 것을 달성하기 위해 AUTO_INCREMENT를 사용할 수 있습니다.

    특정 오류에 대한 자세한 내용이 없다면, 더 구체적인 도움을 제공하기가 어렵다.

    최신 정보

    CREATE TABLE ORD (
      ORDID INT NOT NULL AUTO_INCREMENT,
      //Rest of table code
      PRIMARY KEY (ordid)
    )
    AUTO_INCREMENT = 622;
    

    이 링크는 AUTO_INCREMENT의 사용을 설명하기위한 도움이됩니다. AUTO_INCREMENT 값이 나타납니다 설정하면 테이블 옵션, 그리고 특히 열 속성으로 지정된 것이 될 수 있습니다.

    또한, 위의 링크 중 하나 당, 당신은 양자 택일 테이블에 대한 ALTER 통해 자동 증가 시작 값을 설정할 수 있습니다.

    ALTER TABLE ORD AUTO_INCREMENT = 622;
    

    업데이트 2 여기에 자동 증가를 사용하여 작업 sqlfiddle 예에 대한 링크입니다. 나는이 정보가 도움이되기를 바랍니다.

  2. ==============================

    2.이것은 MySQL의 설명서에서 제시하는 솔루션입니다 :

    이것은 MySQL의 설명서에서 제시하는 솔루션입니다 :

  3. ==============================

    3.증가 테이블을 생성해서 당신은 삽입 된 행을 삭제하지 알고 있어야합니다. 이것에 대한 이유는 그것에 ID-S와 DB에 많은 데이터를 저장 벙어리 피하는 것이다. 그렇지 않으면 MySQL의 경우는 최대 기존 행을 얻고 설명서에서 언급으로 그 시점에서 증가를 계속 다시 시작 http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

    증가 테이블을 생성해서 당신은 삽입 된 행을 삭제하지 알고 있어야합니다. 이것에 대한 이유는 그것에 ID-S와 DB에 많은 데이터를 저장 벙어리 피하는 것이다. 그렇지 않으면 MySQL의 경우는 최대 기존 행을 얻고 설명서에서 언급으로 그 시점에서 증가를 계속 다시 시작 http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html

  4. ==============================

    4.그것과 같은 순서는 파이어 버드에서 작동합니다 :

    그것과 같은 순서는 파이어 버드에서 작동합니다 :

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

    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 );  
    

    - ================================================ ======================= - 증분 iIncrement 반환 그것으로 sSeqName의 순서 값입니다. - 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.
    

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

  5. ==============================

    5.당신은 AUTO_INCREMENT과 다른 STH 필요하면 당신은 여전히 ​​트리거를 사용할 수 있습니다.

    당신은 AUTO_INCREMENT과 다른 STH 필요하면 당신은 여전히 ​​트리거를 사용할 수 있습니다.

  6. from https://stackoverflow.com/questions/26578313/how-do-i-create-a-sequence-in-mysql by cc-by-sa and MIT license