PMA\libraries\Table::_getSQLToCreateForeignKey PHP 메소드

_getSQLToCreateForeignKey() 개인적인 메소드

Returns the SQL query for foreign key constraint creation
private _getSQLToCreateForeignKey ( string $table, array $field, string $foreignDb, string $foreignTable, array $foreignField, string $name = null, string $onDelete = null, string $onUpdate = null ) : string
$table string table name
$field array field names
$foreignDb string foreign database name
$foreignTable string foreign table name
$foreignField array foreign field names
$name string name of the constraint
$onDelete string on delete action
$onUpdate string on update action
리턴 string SQL query for foreign key constraint creation
    private function _getSQLToCreateForeignKey($table, $field, $foreignDb, $foreignTable, $foreignField, $name = null, $onDelete = null, $onUpdate = null)
    {
        $sql_query = 'ALTER TABLE ' . Util::backquote($table) . ' ADD ';
        // if user entered a constraint name
        if (!empty($name)) {
            $sql_query .= ' CONSTRAINT ' . Util::backquote($name);
        }
        foreach ($field as $key => $one_field) {
            $field[$key] = Util::backquote($one_field);
        }
        foreach ($foreignField as $key => $one_field) {
            $foreignField[$key] = Util::backquote($one_field);
        }
        $sql_query .= ' FOREIGN KEY (' . implode(', ', $field) . ') REFERENCES ' . ($this->_db_name != $foreignDb ? Util::backquote($foreignDb) . '.' : '') . Util::backquote($foreignTable) . '(' . implode(', ', $foreignField) . ')';
        if (!empty($onDelete)) {
            $sql_query .= ' ON DELETE ' . $onDelete;
        }
        if (!empty($onUpdate)) {
            $sql_query .= ' ON UPDATE ' . $onUpdate;
        }
        $sql_query .= ';';
        return $sql_query;
    }