2013-12-10 3 views
1

확장 기능이 있고이 확장 기능에는 다양한 삽입 기능을 포함하는 "install.sql"파일이 있습니다.Insert into와 함께 여러 가지 문제가 있습니다.

일부 삽입물은 클라이언트 사이트에 따라 테이블이 존재하거나 존재하지 않을 수 있습니다. 내가 알고 싶은 것은 예를 들면 다음과 같이하는 것입니다.

"테이블 삽입이 존재하면"이지만 "삽입 위치"에 대한 것입니다. 당신의 도움에 미리

INSERT INTO `#__virtuemart_shipmentmethods_en_gb` 
(virtuemart_shipmentmethod_id, shipment_name, shipment_desc, slug) 
VALUES ((SELECT MAX(vs.virtuemart_shipmentmethod_id) 
FROM `#__virtuemart_shipmentmethods` vs), 'Kiala','', 'kiala'); 

감사 :

메신저 뭘의 예입니다.

답변

0

같은 몇 가지 일 것입니다 평소 befor을 모두 확인해야하는 것보다 당신이이 저장되어 실행 고려 가지고 procedu 레? 예 :

CREATE PROCEDURE `testprocdure`() 
BEGIN 

IF (SELECT COUNT(*) 
FROM information_schema.tables 
WHERE table_schema = '[database name]' 
AND table_name = '#__virtuemart_shipmentmethods_en_gb') = 1 THEN 

INSERT INTO `#__virtuemart_shipmentmethods_en_gb` (virtuemart_shipmentmethod_id, shipment_name, shipment_desc, slug) 
VALUES ((SELECT MAX(vs.virtuemart_shipmentmethod_id) FROM `#__virtuemart_shipmentmethods` vs), 'Kiala','', 'kiala'); 

ELSE 

-- Handle if the table doesnt exists 
SELECT ''; -- This is just so the SP wont return a error after the else. Remove this when you want to run it 
END IF; 
END 

변수를 변경하는 경우 매개 변수를 사용할 수도 있습니다.

그런 다음 생성 구문은 매개 변수와 데이터 형의 이름은 사용자의 요구에 맞게이

CREATE PROCEDURE `testprocdure` (IN p_TableName VARCHAR(100)) 

변경과 같아야합니다.

아마도 도움이 될까요?

1
내가 바로 질문을 가지고 있다면 내가 모르는

....

당신은 somesthing을 삽입 할 업데이트 할 이미 자사을 경우? 그래, 당신은 propably 그렇지 않으면 THIS HERE을 찾는 것은 질문이 잘못된 설정하거나 경우

그에게 나를 얻을 늦게 것이 바로 :)

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) 
     ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); 

테이블이있는 경우 당신이 모르는 경우 당신이 난 당신이 무엇을 사용 모르는, PDO를 사용하지만 내 솔루션이

$result = mysql_query("SHOW TABLES LIKE '#__virtuemart_shipmentmethods_en_gb'"); 
$tExists = mysql_num_rows($result) > 0; 
if(!$tExists) 
    // Create Table Code here 
+0

나는 내가 꽤 유감스럽게 생각한다고 생각했다 : P. 내 문제는 '#__ virtuemart_shipmentmethods_en_gb'라는 테이블이 있거나 내 확장 프로그램이 삽입을 시도하려고해도 그렇다고 볼 수는 없다는 것입니다. 이러한 테이블이 존재하지 않으면 오류가 다시 발생하고 설치가 계속되지 않습니다. 테이블에 데이터를 삽입하려고했는지 확인하는 방법을 알고 싶습니다. – MONZTAAA

+0

IGNORE를 INSERT IGNORE INTO 구문에 추가해야합니까? –

+0

오, 그 경우에는 전에 확인해야합니다, 내 게시물을 업데이 트합니다 – Dwza

관련 문제