[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.이 문서를 확인하십시오. 나는 당신이 원하는 무엇을 얻을 수 있도록해야한다 생각합니다. 테이블이 이미 존재하고, 이미 데이터가있는 경우, 당신은 점점 오류가 이미 다른 기록을 위해 존재하는 값을 할당하려고 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.이것은 MySQL의 설명서에서 제시하는 솔루션입니다 :
이것은 MySQL의 설명서에서 제시하는 솔루션입니다 :
-
==============================
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.그것과 같은 순서는 파이어 버드에서 작동합니다 :
그것과 같은 순서는 파이어 버드에서 작동합니다 :
-- =======================================================
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.당신은 AUTO_INCREMENT과 다른 STH 필요하면 당신은 여전히 트리거를 사용할 수 있습니다.
당신은 AUTO_INCREMENT과 다른 STH 필요하면 당신은 여전히 트리거를 사용할 수 있습니다.
from https://stackoverflow.com/questions/26578313/how-do-i-create-a-sequence-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] NOT이있는 대 LEFT OUTER에 SQL 성능 가입 (0) | 2020.04.04 |
---|---|
[SQL] 어떻게 SQL 변수에 간부 인 결과를 할당? (0) | 2020.04.04 |
[SQL] 엔티티 - 속성 - 값 테이블 디자인 (0) | 2020.04.04 |
[SQL] T-SQL : 라운드 근처로 15 분 간격 (0) | 2020.04.04 |
[SQL] SQL Server의 SYSNAME 데이터 형식은 무엇입니까? (0) | 2020.04.04 |