MySQL에서 시퀀스를 만들려면 어떻게 하나요?
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;
왜 이것을 선호하는지 모르겠지만 다른 사람이 이것에 대해 도움이 필요하다면 여기에 있습니다.)
21
5
이것은 [MySQl 매뉴얼에서 제안하는] 해결책입니다1:
이 문서]1를 확인하세요. 원하는 것을 얻는 데 도움이 될 것입니다. 테이블이 이미 존재하고 그 안에 데이터가 이미 있는 경우, 다른 레코드에 이미 존재하는 값을 할당하려고 시도하는 자동 증가로 인해 오류가 발생할 수 있습니다.
요컨대, 다른 사람들이 이미 댓글에서 언급했듯이 오라클에서 생각하고 처리하는 시퀀스는 MySQL에 존재하지 않습니다. 그러나 자동 증가를 사용하여 원하는 것을 달성할 수 있습니다.
특정 오류에 대한 추가 세부 정보가 없으면 더 구체적인 도움을 드리기 어렵습니다.
업데이트
이 링크는 자동 증가의 사용법을 설명하는 데 도움이 됩니다. 자동 증가 값 설정은 열 속성으로 특별히 지정되는 것이 아니라 테이블 옵션으로 설정하는 것으로 보입니다.
또한 위의 링크 중 하나에 따라 테이블 변경을 통해 자동 증가 시작 값을 설정할 수도 있습니다.
업데이트 2 다음은 자동 증분을 사용하는 작동하는 SQLFiddle 예제에 대한 링크입니다.
이 정보가 도움이 되길 바랍니다.
증분 테이블을 만들 때 삽입 된 행을 삭제하지 않도록주의해야합니다. 그 이유는 ID가 포함 된 큰 멍청한 데이터를 DB에 저장하지 않기 위해서입니다. 그렇지 않으면 mysql을 다시 시작할 때 문서 http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html 에 언급된 대로 최대 기존 행을 가져와서 그 시점부터 증분을 계속합니다.
시퀀스는 다음과 같이 그것에서 작동합 firebird:
-- =======================================================
-- ======================================================= --시퀀스를 만듭니다 sSeqName 설정 초기 값입니다. -- =======================================================
-- ======================================================================= --단위로 순서의 값을 sSeqName 여 iIncrement 하고 반환합니다. -경 iIncrement 제로,의 현재 값을 반환합니 sSeqName. -- =======================================================================
-- ===================================================================
필요할 경우 sth 다른 다음의 특징을 계속 사용할 수 있습 트리거합니다.