MySQL

Миграция затрагивающая данные:

class Version20150722151547 extends AbstractMigration
{
    const TABLE_WORK    = 'participant';
    const TABLE_BACKUP = 'participant_20150722151547';

    public function up(Schema $schema)
    {

        // создаем бэкап-таблицу и копируем в неее данные без индексов и FK
        $this->addSql('CREATE TABLE ' . self::TABLE_BACKUP . ' AS SELECT * FROM ' . self::TABLE_WORK);
        // изменяем данные
        $this->addSql('UPDATE ' . self::TABLE_WORK . ' SET doc_type = 1 WHERE participant_type = 1');

    }

    public function down(Schema $schema)
    {
        $this->addSql('SET FOREIGN_KEY_CHECKS = 0');
        $this->addSql('SET UNIQUE_CHECKS = 0');
        $this->addSql('TRUNCATE ' . self::TABLE_WORK);
        $this->addSql('INSERT INTO ' . self::TABLE_WORK . ' SELECT * FROM ' . self::TABLE_BACKUP);
        $this->addSql('DROP TABLE ' . self::TABLE_BACKUP);
        $this->addSql('SET UNIQUE_CHECKS = 1');
        $this->addSql('SET FOREIGN_KEY_CHECKS = 1');
    }
}

Стоит заметить, что команада SET FOREIGN_KEY_CHECKS = 0 работает для текущей сессии (настройка текущей сессии), то есть на другом параллельном подключении будет уже стоять SET FOREIGN_KEY_CHECKS=1 (если в настройках не было указано иного).

Нюансы работы внешних ключей на примере ORM Doctrine2.

Придерживаться правил именования при разработке, всегда является хоршим тоном, поэтому, мне кажется, в SQL такие правила тоже должны быть.

Главная
X

Новые заметки:

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Защита сервера от ошибок в phpMyAdmin

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру »