1

我正在尝试在不同的 5 个数据库中执行以下脚本。

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());

现在,我想在这里检查一下 if @CONSTRAINT_NAMEis NOT NULLthen 应该只执行下面的语句。可能吗?

    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;
4

1 回答 1

1

是的,可以使用标准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

有关详细信息,请参阅参考手册。

于 2014-06-23T10:46:58.783 回答