Now we aren't guessing check constraint names

but getting the real ones under PostgreSQL. MDL-9356
This commit is contained in:
stronk7 2007-09-11 19:06:38 +00:00
parent 3e38ceb837
commit f0dfc20124

View file

@ -400,14 +400,21 @@ class XMLDBpostgres7 extends XMLDBgenerator {
' ADD ' . $this->getEnumExtraSQL($xmldb_table, $xmldb_field)); ' ADD ' . $this->getEnumExtraSQL($xmldb_table, $xmldb_field));
} }
/** /**
* Given one XMLDBTable and one XMLDBField, return the SQL statements needded to drop its enum * Given one XMLDBTable and one XMLDBField, return the SQL statements needded to drop its enum
* (usually invoked from getModifyEnumSQL() * (usually invoked from getModifyEnumSQL()
*/ */
function getDropEnumSQL($xmldb_table, $xmldb_field) { function getDropEnumSQL($xmldb_table, $xmldb_field) {
/// All we have to do is to drop the check constraint /// Let's introspect to know the real name of the check constraint
return array('ALTER TABLE ' . $this->getTableName($xmldb_table) . if ($check_constraints = $this->getCheckConstraintsFromDB($xmldb_table, $xmldb_field)) {
' DROP CONSTRAINT ' . $this->getStandardNameForObject($xmldb_table->getName(), $xmldb_field->getName(), 'ck')); $check_constraint = array_shift($check_constraints); /// Get the 1st (should be only one)
$constraint_name = strtolower($check_constraint->name); /// Extract the REAL name
/// All we have to do is to drop the check constraint
return array('ALTER TABLE ' . $this->getTableName($xmldb_table) .
' DROP CONSTRAINT ' . $constraint_name);
} else { /// Constraint not found. Nothing to do
return array();
}
} }
/** /**