2012-01-01 3 views
-1

다음과 같은 mysql 쿼리를 실행하려고하는데 오류가 발생하지는 않지만 작동하지도 않습니다. 난 그냥 중복이 감지되면 열 이름을 업데이 트 싶어요. 감사 : O)이중화 키 테이블 변경

<?php 
$form_id = $_POST[form_id]; 
    $query = mysql_query(<<<EOT 
    ALTER TABLE `email_history` ADD `$form_id` VARCHAR(255) NOT NULL) 
    ON DUPLICATE KEY ALTER TABLE `email_history` CHANGE `$form_id` `$form_id` VARCHAR(255) NOT NULL 
    EOT 
    ) or die(mysql_error()); 
     ?> 

편집 >>>>>>> I 업데이트하려고했던 유일한 이유는 형태를 편집 할 때 스크립트가 오류하지 않도록했다. 사용자가 해당 열 아래에 날짜가 기록 된 템플릿을 사용하여 전자 메일을 보내면 전자 메일 템플릿이 만들어지고 전자 메일 기록 테이블에 열이 추가됩니다. 이 문제는 전자 메일 기록에서 템플릿에 대한 열을 다시 만들려고 할 때 열 만들기 스크립트가 편집하려고 할 때 전자 메일 서식 파일을 편집 할 때 발생합니다. 오류가 발생하면 템플릿을 편집 할 때 열이 이미 있음을 알게되고 시도하지 않은 것이 이상적입니다. 그것을 다시 만들어라.

+1

동적으로 해당 테이블에 열을 추가하려고 시도하고 해당 열이 이미 존재하면 유형을 변경하려고합니까? 그렇다면 디자인을 재고해야합니다 (단 한번의 업그레이드 유형 프로세스는 아니지만 확실하게 보이지는 않습니다). – Mat

+0

어쩌면 그는 NoSQL 배경에서 오는 것입니다 :-) –

+0

안녕하세요, 저는 열을 변경하고 싶지 않습니다. 한 번 실행하고 열을 만든 다음 문제가 있습니다. 양식을 편집하면 스크립트가 다시 작성됩니다. 컬럼을 다시 생성하십시오. 컬럼이 존재한다면 스크립트를 다시 만들지 않는 것이 이상적입니다. –

답변

3

ALTER TABLE ON DUPLICATE KEY과 같은 것은 없습니다. 두 단계로해야합니다.

  1. Retrieve 테이블 구조.

  2. 적절한 쿼리를 만들고 실행하십시오.

+0

중복 열 이름과 마찬가지로 대체 항목이 없습니까? 실제로 열 이름을 그대로 유지하고 싶지는 않지만 열 때마다 복제 열 경고가 표시되지 않습니다. –

+0

나는 두려워하지 않습니다. –