- public function addForeignKey(
- $fkName,
- $tableName,
- $columnName,
- $refTableName,
- $refColumnName,
- $onDelete = AdapterInterface::FK_ACTION_CASCADE,
- $purge = false,
- $schemaName = null,
- $refSchemaName = null
- ) {
- $this->dropForeignKey($tableName, $fkName, $schemaName);
-
- if ($purge) {
- $this->purgeOrphanRecords($tableName, $columnName, $refTableName, $refColumnName, $onDelete);
- }
-
- $query = sprintf(
- 'ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)',
- $this->quoteIdentifier($this->_getTableName($tableName, $schemaName)),
- $this->quoteIdentifier($fkName),
- $this->quoteIdentifier($columnName),
- $this->quoteIdentifier($this->_getTableName($refTableName, $refSchemaName)),
- $this->quoteIdentifier($refColumnName)
- );
-
- if ($onDelete !== null) {
- $query .= ' ON DELETE ' . strtoupper($onDelete);
- }
-
- $result = $this->rawQuery($query);
- $this->resetDdlCache($tableName);
- return $result;
- }