2012-06-09 3 views
1

은 이제 나는이 같은 데이터베이스에 연결된 테이블이 있다고 가정 해 봅시다 이전에 삭제 한 레코드와 이전에 삭제 된 ID 번호 대신 다음 ID가 있습니까? 녹색 삭제 MySQL의 ID

  • 블루
  • 녹색
  • 클릭 버튼

    1. 레드 예를 들어

      .

      1. 레드
      2. 블루

      클릭 버튼은 새로운 색상을 추가 할 수 있습니다. 입력 오렌지

      1. 레드
      2. 블루
      3. 오렌지 약자로, 내가 함께 일하고 있어요 무엇을 가하고 있습니다

      : 1. 레드 2. 블루 4. 오렌지 (이것을 3으로 설정해야하는 이유는 무엇입니까?)

      아마도 테이블 설정 측면에서 보면 간단 할 지 모르겠지만 무엇을해야할지 모르겠습니다. 그리고 나는 시간이 없어. 내가해야 할 일을 누군가가 안내해 줄 수 있습니까?

    +0

    나는 방금 y ou는 삭제와 삽입을 두 개의 개별 작업으로 분리합니다. ID를 왜 다시 사용 하시겠습니까? – Brian

    +0

    안녕하세요 Brian, 입력 값을 받아서 테이블에 넣거나 만들 HTML 페이지가 있습니다. 그런 다음 링크에있는 것처럼 편집 및 삭제 기능이 있습니다. 데이터베이스 흐름을 순차적으로 작성하도록 요청 받았습니다. 이것이 가장 효율적인 방법이 아니라면 나는 반대 할 필요가 없다. 그러나 그것은 내가하도록 지시받은 것이었다. 나는 그것이 깔끔함을 보여줄 것이라고 생각합니다. 확실하지 않습니다. 나는 단지 내가 묻는 것을하려고 노력하고 있습니다. – Keith

    답변

    0

    이전 레코드를 삭제하고 새로운 레코드를 INSERT하는 것이 아니라 레코드를 업데이트하고 싶다고 생각합니다.

    편집 :

    새 레코드를 삽입하고 다음 순서 ID를 할당, 비 AUTO_INCREMENT 컬럼을 사용하여 새 레코드 추가 할 때이 작업을 수행하려면 다음

    INSERT INTO myTable (id, ...) VALUES ((SELECT MAX(id) + 1 FROM myTable), ...) 
    

    을 이 테스트에 편리한 데이터베이스가 없지만 제대로 작동 할 것이라고 생각합니다. 그러나 테이블이 비어있을 때 어떤 일이 생길지 잘 모르겠습니다. 또한 이것은 경쟁 조건을 만들 수 있습니다.

    0

    아니요, 데이터베이스 행을 삭제할 때 열의 열이 AUTO_INCREMENT이면 열에서 값을 가져옵니다. 3을 삭제하면 시퀀스는 항상 3 + 1에서 시작합니다. 자동 증가 값을 \ my_admin에서 볼 수 있습니다. 어떤 DBMS를 사용하고 있는지 알 수 없지만 oracle을 사용하면 시퀀스를 조작 할 수 있습니다.

    그래서 다양한 방법이 있습니다.

    1. 복잡한 : id, IdToShow, Value : 삽입 할 때 \ 당신이 트리거
    2. 당신은 3 coloumn를 사용하여 순서를 업데이트 삭제합니다.

    id은 현재 autoinc와 함께 사용합니다. idToShow도 표시됩니다. 삽입 할 때 테이블에있는 행 수를 삽입 할 수 있습니다 (다양한 방법이 있습니다).

    희망이 있습니다.

    +0

    관리자와 죄송합니다. 답을 쓸 때 코드가 아직 실용적이지 않습니다. 다음에 나는 더 조심스럽게 말할 것입니다. –

    +0

    안녕하세요, Andrea, PHPmyadmin을 사용하고 있습니다. 그래서 데이터베이스에 자동으로 증가하는 ID를 갖는 방법이 있지만 그 값을 페이지에 반영하는 방법은 1,2,3이 아니라 마치 1,2,4가 아닌 것처럼 나타납니다 데이터베이스에서 이런 식으로)? – Keith

    +0

    예. id와 ID에 대해 다른 coloumn을 사용하고 db에 표시되는 ID를 사용할 수 있습니다. 당신이 원하는 coloumn을 삽입하면 (1,2,3 ecc) 당신은 테이블에있는 행을 계산합니다. –

    1

    두 가지 옵션이있을 수 있습니다. 이전에 "녹색"값과 동일한 행을 업데이트하십시오. 즉 :

    mysql_query("UPDATE table_name SET color = 'orange' WHERE ID = '3'"); 
    

    또는

    mysql_query("UPDATE table_name SET color = 'orange' WHERE color = 'green'"); 
    

    또는 지정자가 될 수 무엇

    .

    이것은 MySql 관점에서 가장 쉬운 방법이어야합니다. 또는 당신은 당신이 처음에 설명 된대로 삭제하고는 mysql_query ("INSERT INTO 새로운 행을 삽입 다시 ....하지만 MySQL의 PK UID 재설정해야합니다 수 있습니다 예 : 사용자의 사용 PK ID를 제거합니다

    mysql_query("ALTER TABLE table_name AUTO_INCREMENT = 1"); 
    

    +0

    통찰력과 시간을 가져 주셔서 감사합니다. 그러나 처음에는 두 개의 쿼리 또는 드롭 다운 입력과 같은 행에 여러 가지가 있기 때문에이를 사용하는 방법이 부분적으로 혼동 스럽습니다. 세 번째로 좀 더 자세히 설명합니다.이것은 내가 모든 것을 순서대로 반복하도록 도와 줄 것입니까? 이 시점에서 나는 하나를 삭제 한 다음 새로운 것을 추가 할 때 모든 것이 goobledigook이고 id는 편집/삭제 점 다음에 있기 때문에 항목을 순서대로 반향시키고 싶습니다. – Keith

    +0

    ok ... 정확한 표 열 헤더를 보내 주시면 좀 더 정확하게하려고 노력하겠습니다. – Milan

    0

    문제는 데이터베이스 ID에 관한 것이 아니라 ID와 행 번호의 차이를 이해하지 못하는 것입니다. 단순히 서로 관련이 없습니다. 단순히 출력 만하면됩니다. ID 대신 루프 카운터 ("$ i").

    <?php 
    for ($i = 1; $i <= foo(); $i++) { 
        print "<tr><td>{$i}</td><td>...</td></tr>\n"; 
    } 
    ?>