MySql 만듭 표하지 않을 경우 존재하는 다른 사람 잘?
문제
여기에 업데이트되는 질문:
현재 쿼리가가 다음과 같은 작업을 수행:
$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,그것은 더 나은 것을 업데이트를 원래의 보다는 오히려 질문에 답.그것은 최고의가 있는 경우의 단일 위치를 포함하는 완전한 질문을 하는 것 보다는 그 밖으로 확산에서 논의한다.
벤의 대답은 합리적인을 제외하고,그는 것으로 보인'아니다'그가 원하지 않는다.떨어지는 테이블의 경우에만 지 존재하지 않습니다.
당신이 실제로 여러개의 문이 있습니다.거나 조건을 만들때 채:
- 을 만들 임시 테이블이 없는 경우 linkedin(int id,name varchar(80))
- TRUNCATE TABLE linkedin
- 에 삽입 linkedin SELECT*FROM barfu
하거나 삭제하고 다시 만드십시오
- 테이블 삭제 존재하는 경우 linkedin
- 을 만들 임시 테이블 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 ;
는 방법에 대해:
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 하는지 확인하려면 테이블이 존재하기 전에 자릅니다.