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

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

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

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

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

Yapro CMS:

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

youtube.com/watch?v=7hFivbgIEqk

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

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