문제

여기에 업데이트되는 질문:

현재 쿼리가가 다음과 같은 작업을 수행:

$sql1 = "TRUNCATE TABLE fubar";
$sql2 = "CREATE TEMPORARY TABLE IF NOT EXISTS fubar SELECT id, name FROM barfu";

첫번째 방법이 포함된 이행,그것은 오류 메시지를 생성합에서 자를 때문에 테이블이 아직 존재하지 않습니다.

나의 옵션만을 CREATE TABLE, 실행 TRUNCATE TABLE, 을 채우십니다.(3 별도의 쿼리)

원래의 질문이었다:

나는 데 힘든 시간을 알아내려는 경우 다음이 가능 MySql 를 작성하지 않고도록 sql:

CREATE TABLE fubar IF NOT EXISTS ELSE TRUNCATE TABLE fubar

실행하는 경우 자르기 전에 별도로 만들기 테이블과 테이블에 존재하지 않는,그때 나는 오류 메시지가 표시됩니다.내가 노력하고 제거하는 오류 메시지가하지 않고 더 추가 쿼리를 처리합니다.

이 코드는 실행할 사용 PHP.

도움이 되었습니까?

해결책

shmuel613,그것은 더 나은 것을 업데이트를 원래의 보다는 오히려 질문에 답.그것은 최고의가 있는 경우의 단일 위치를 포함하는 완전한 질문을 하는 것 보다는 그 밖으로 확산에서 논의한다.

벤의 대답은 합리적인을 제외하고,그는 것으로 보인'아니다'그가 원하지 않는다.떨어지는 테이블의 경우에만 존재하지 않습니다.

당신이 실제로 여러개의 문이 있습니다.거나 조건을 만들때 채:

  1. 을 만들 임시 테이블이 없는 경우 linkedin(int id,name varchar(80))
  2. TRUNCATE TABLE linkedin
  3. 에 삽입 linkedin SELECT*FROM barfu

하거나 삭제하고 다시 만드십시오

  1. 테이블 삭제 존재하는 경우 linkedin
  2. 을 만들 임시 테이블 linkedin 선택 id,이름에서 barfu

으로 순수한 SQL 사람들은 두 부류의 솔루션입니다.나는 다음과 같은 두 번째 더 낫습니다.

(저장된 절차의 당신이 그것을 줄일 수 있습니다.을 하나의 문입니다.다음과 같습니다.TruncateAndPopulate(linkedin)그러나 당신이 쓰는 코드에 대한 TruncateAndPopulate()너보다 더 많은 시간을 보내고 그냥을 사용하여 SQL 니다.)

다른 팁

당신이 할 수 있는 자를 후'을 만들지 않으면의 존재'.는 방식 그것은 항상 존재하는 것입니다...고 항상 있는 빈에서는 점이다.

CREATE TABLE fubar IF NOT EXISTS
TRUNCATE TABLE fubar

실행 쿼리하면 테이블이 존재합니다.

사용법: call Edit_table(database-name,table-name,query-string);

  • 절차가 존재하는지 확인합니다 테이블에서 데이터베이스 이름과 실행됩니다 query-string 는 경우 그것은 존재합니다.다음과 같은 저장 프로시저:
DELIMITER $$

DROP PROCEDURE IF EXISTS `Edit_table` $$
CREATE PROCEDURE `Edit_table` (in_db_nm varchar(20), in_tbl_nm varchar(20), in_your_query varchar(200))
DETERMINISTIC
BEGIN

DECLARE var_table_count INT;

select count(*) INTO @var_table_count from information_schema.TABLES where TABLE_NAME=in_tbl_nm and TABLE_SCHEMA=in_db_nm;
IF (@var_table_count > 0) THEN
  SET @in_your_query = in_your_query;
  #SELECT @in_your_query;
  PREPARE my_query FROM @in_your_query;
  EXECUTE my_query;

ELSE
  select "Table Not Found";
END IF;

END $$
DELIMITER ;

에 더 Mysql

는 방법에 대해:

DROP TABLE IF EXISTS fubar;
CREATE TABLE fubar;

또는 당신,당신이 그것을하고 싶으로 단일 query?

확인 후,나쁘지 않다.더 특정,현재의 쿼리가가 다음과 같은 작업을 수행:

$sql1 = "TRUNCATE TABLE fubar";
$sql2 = "CREATE TEMPORARY TABLE IF NOT EXISTS fubar SELECT id, name FROM barfu";

첫번째 방법이 포함된 이행,그것은 오류 메시지를 생성합에서 자를 때문에 테이블이 아직 존재하지 않습니다.

나의 옵션만을"CREATE TABLE",실행하는"잘"테이블 작성 내용이 있는가?(3 별도의 쿼리)

PS-감사에 대한 응답이 너무 빨리!

를 사용하는 경우 PHP 사용 mysql_list_tables 하는지 확인하려면 테이블이 존재하기 전에 자릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top