2014-06-23 41 views
0

我想在不同的5个数据库中执行脚本。如何在执行特定查询之前检查mysql中的空值条件?

SET @CONSTRAINT_NAME = (SELECT CONSTRAINT_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'StudentMaster' 
AND TABLE_NAME = 'StudentSubjectMa' 
AND CONSTRAINT_SCHEMA = DATABASE()); 

现在,我想在这里检查,如果@CONSTRAINT_NAMENOT NULL则只有下面的声明应被执行。可能吗?

SET @DROP_CONSTRAINT_SQL = CONCAT("ALTER TABLE StudentSubjectMarksMap 
    DROP FOREIGN KEY `", @CONSTRAINT_NAME , "`"); 

    PREPARE DROP_CONSTRAINT_SQL_STMT FROM @DROP_CONSTRAINT_SQL; 
    EXECUTE DROP_CONSTRAINT_SQL_STMT; 
    DROP PREPARE DROP_CONSTRAINT_SQL_STMT; 

回答

0

是的,这是可能的标准IF声明:

IF @CONSTRAINT_NAME IS NOT NULL THEN 
    SET @DROP_CONSTRAINT_SQL = CONCAT("ALTER TABLE StudentSubjectMarksMap 
    DROP FOREIGN KEY `", @CONSTRAINT_NAME , "`"); 

    PREPARE DROP_CONSTRAINT_SQL_STMT FROM @DROP_CONSTRAINT_SQL; 
    EXECUTE DROP_CONSTRAINT_SQL_STMT; 
    DROP PREPARE DROP_CONSTRAINT_SQL_STMT; 
END IF 

详情请参阅reference manual

+0

嗨@vhu,谢谢,但它只能在函数()或过程()中使用。我只需要简单的语法。我不想在外部调用函数。 –

+0

@vishal:你只是在运行SQL脚本,还是从PHP或Bash控制它? – vhu

+0

我想只运行SQL脚本。 –

相关问题