sql >> Databáze >  >> RDS >> Mysql

Vytvoření procedury MYSQL v Laravel 4 Migrations

Váš kód má dva hlavní problémy

  1. DELIMITER není platný příkaz SQL. Je to jen příkaz klienta MySql. Tak to prostě nepoužívejte. BTW chyba, kterou dostanete, vám to přesně říká.
  2. Nemůžete použít DB::statement pro provedení CREATE PROCEDURE kód, protože používá připravený příkaz zdroj kód pro Connection . Můžete použít PDO exec() DB::connection()->getPdo()->exec() místo

Jedná se o ukázkovou migraci imaginárních tags tabulka může vypadat takto

class CreateTagsTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('tags', function($table){
            $table->increments('id');
            $table->string('name')->unique();
        });
$sql = <<<SQL
DROP PROCEDURE IF EXISTS sp_insert_tag;
CREATE PROCEDURE sp_insert_tag(IN _name VARCHAR(32))
BEGIN
    INSERT INTO `tags`(`name`) VALUES(_name);
END
SQL;
        DB::connection()->getPdo()->exec($sql);
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        $sql = "DROP PROCEDURE IF EXISTS sp_insert_tag";
        DB::connection()->getPdo()->exec($sql);
        Schema::drop('tags');
    }
}


  1. Export MySQL do CSV, některé sloupce s uvozovkami a některé bez

  2. Výukový program ovládání Activex ListView-01

  3. rails dynamic where sql query

  4. Vytvořte tabulku v obrazu dockeru PostgreSQL