2010-06-04 6 views
0
SELECT @cnt := COUNT(table_name) 
    FROM information_schema.tables 
WHERE table_schema = 'TAA' 
    and table_name = 'Clients'; 

IF (@cnt > 0) THEN 
    INSERT INTO `ClientsBAK` SELECT * FROM `Clients`; 
END IF; 

Je reçois une erreur de syntaxe à IF(@cnt > 1) THEN erreur 1064Quel est le problème avec ce script MySQL?

+0

Quelle version de MySQL utilisez-vous? –

+1

Comment essayez-vous de lancer ceci? Idéalement, il devrait être dans une procédure stockée. –

+0

Etes-vous sûr de vouloir tester s'il y a plus d'une table correspondant à vos critères? –

Répondre

1

Créer une procédure stockée:

DELIMITER // 
CREATE PROCEDURE BackupClients() 
BEGIN 

    SELECT @cnt := COUNT(table_name) 
    FROM information_schema.tables 
    WHERE table_schema = 'TAA' 
    AND table_name = 'Clients'; 

    IF @cnt > 0 THEN 
     INSERT INTO `ClientsBAK` SELECT * FROM `Clients`; 
    END IF; 

END // 
DELIMITER ; 

CALL BackupClients(); 

Je pense que vous aussi voulez IF @cnt > 0 au lieu de IF @cnt > 1, alors j'ai changé pour vous.

+0

Correct- J'avais joué avec le code et laissé cette faute de frappe. – ashurexm

3

AFAIK, vous ne pouvez utiliser IF comme dans les routines (fonctions, déclencheurs, procédures stockées).