[질문] MYSQL에서 AUTO INCREMENT 옵션을 사용하여 코딩시..

leolo의 이미지

MYSQL에서
다음과 같은 NO 항목을 AUTO INCREMENT로 두었습니다.
NO | int(10) | | PRI | NULL || auto_increment |

그런데, 이 놈의 값을 메시지로 다른 클라이언트 프로그램에
전송할려고 하는데요. 넉넉하게 선언할 수 있는 자료형이 무엇인지
알고 싶습니다.

다시 간추리면요.
테이블 TEST의 NO 값이 AUTO INCREMENT로 증가되게 되는데,
저는 이놈을 구조체의 멤버로 전송할려고 합니다.
typedef struct _STR
{
자료형 no;
} STR;
여기서, 자료형을 무엇으로 두면 될까요?
계속계속 증가하는 값이니까? double로 두면 될런지,
더불어, 위의 NO 값을 얼마만큼 증가하게 되는지요.
DB는 MYSQL이며, NO값이 한계치에 다다르면 다시 처음부터 증가하는지요...

제가 생각한 것은 이렇습니다.
자료형은 double형으로 선언하고요.
NO테이블을 query해서 string 값을 얻겠죠. 이값은 숫자이고 엄청나게 큰수가 될 수도 있겠죠. 이놈을 atof()로 하여 double자료형으로 변환하고, 이걸 구조체에 정의하여 클라이언트 프로그램으로 보냅니다. 클라이언트는 이를 받아서 작업을 처리하고 다시, 구별할 수 있도록 NO값을 다시 보냅니다.
이렇게 하면 될런지..
조언 부탁드립니다.

kyeongchan의 이미지

char [12]

이정도면 충분하지 않을까요...

icebug의 이미지

unsigned int 로 하시면 됩니다.

MySQL에서의 int 값은 메뉴얼에 보시면 4Bytes로 저장된다고 되어있습니다.

그럼 즐거운 하루 되세요.

rasungboy의 이미지

leolo wrote:
MYSQL에서
다음과 같은 NO 항목을 AUTO INCREMENT로 두었습니다.
NO | int(10) | | PRI | NULL || auto_increment |

그런데, 이 놈의 값을 메시지로 다른 클라이언트 프로그램에
전송할려고 하는데요. 넉넉하게 선언할 수 있는 자료형이 무엇인지
알고 싶습니다.

똑같이 선언하면 되지 않을까요? 컬럼이 int(10) 이니까 unsigned int 형이면 될듯한
데... 아 그리고 unsigned 로 선언하는게 좋습니다.
예를들어 컬럼 타입을 TINYINT 로 하면 최대 시퀸스 번호는
127 입니다. UNSINGED 로 선언해야 255 가 상한이 되는거죠.

leolo wrote:

여기서, 자료형을 무엇으로 두면 될까요?
계속계속 증가하는 값이니까? double로 두면 될런지,
더불어, 위의 NO 값을 얼마만큼 증가하게 되는지요.
DB는 MYSQL이며, NO값이 한계치에 다다르면 다시 처음부터 증가하는지요...

no 값이 한계치에 다다르면 더이상 레코드는 삽입되지 않습니다
그래서 테이블을 비우던지 해야죠.

leolo의 이미지

그러면, no값을 다시 처음으로 돌리는 방법은 없는지요..

실력이 있으면 삶이 편하다... 영차 영차...

rasungboy의 이미지

leolo wrote:
그러면, no값을 다시 처음으로 돌리는 방법은 없는지요..

레코드를 다 삭제하는 방법 밖에는 없을듯 합니다.
auto_increment 동작원리가 가장 큰값부터 1씩 증가시키기
때문입니다.

레코드가 꽉 찼다고 쳤을때 (1 부터 100)
맨앞 10개를 지우고( 1부터 10까지) 맨뒤 10개를
지웠다고 치면 ( 91-100 )
새로 삽입되는 레코드의 auto_increment칼
럼의 값은 1 부터 채워지는것이 아니라 91부터 시작하고
100까지 다다르면 다시 1부터 10까지 채웁니다.

이원리를 이용해서 보통 1000부터 시작하는 시퀸스값을
만들고 싶을때 999의 시퀸스 값을 가지는 허위 레코드를
테이블에 삽입하는 방법을 이용하기도 하죠.

근데 왜 다시 되돌려야 하는 이유가 있는지 궁금합니다.
혹 값이 다 차버리는 예외상황을 위해 그러시는 거라면
그냥 아예 칼럼 타입을 아예 큰 값으로 할당하거나
또는 다 차는 상황이 발생하면 테이블을 백업하고 지우고
하는 예외처리를 해주면 될듯한데요...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.