2014-06-23 37 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腳本。 –

相關問題