static $show = array();
if (!array_key_exists($tableName, $show)) {
- $query = "SHOW CREATE TABLE $tableName";
- $dao = CRM_Core_DAO::executeQuery($query);
+ $query = "SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = %1";
+ $params = array( 1 => array($tableName, 'String'));
+ $dao = CRM_Core_DAO::executeQuery($query, $params);
- if (!$dao->fetch()) {
- CRM_Core_Error::fatal();
+ while ($dao->fetch()) {
+ $show[$tableName][] = $dao->CONSTRAINT_NAME;
}
-
$dao->free();
- $show[$tableName] = $dao->Create_Table;
}
- return preg_match("/\b$constraint\b/i", $show[$tableName]) ? TRUE : FALSE;
+ return in_array($constraint, $show[$tableName]) ? TRUE : FALSE;
}
/**
$foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $value['fkey']);
$fKey = $value['fkey'];
} else {
- $foreignKeyExists = CRM_Core_DAO::checkFKConstraintInFormat($value['tableName'], $columnName);
$fKey = "`FK_{$value['tableName']}_{$columnName}`";
+ $foreignKeyExists = CRM_Core_DAO::checkConstraintExists($value['tableName'], $fKey);
}
if ($foreignKeyExists || $value['tableName'] == 'civicrm_financial_trxn') {
if ($value['tableName'] != 'civicrm_contribution_recur' || ($value['tableName'] == 'civicrm_contribution_recur' && $dao->N)) {