sql >> データベース >  >> RDS >> Mysql

Laravel4移行でのMYSQLプロシージャの作成

    コードには2つの大きな問題があります

    1. DELIMITER は有効なSQLステートメントではありません。これは単なるMySqlクライアントコマンドです。したがって、使用しないでください。 BTW 発生したエラーは、まさにそれを示しています。
    2. DB::statementは使用できません CREATE PROCEDUREを実行するには プリペアドステートメント source Connectionのコード 。 PDO exec()を使用できます DB::connection()->getPdo()->exec() 代わりに

    とはいえ、架空のtagsの移行例 テーブルは次のようになります

    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. MS SQL Server-CURSORはいつ良いですか?

    2. Python用MySQLコネクタ

    3. SQL。複合主キーOracleを参照する方法は?

    4. PHPを使用してユーザー名がMySQLデータベースにすでに存在するかどうかを確認しようとしています