【问题标题】:Laravel , Creating Trigger through migration runs successfully, but couldn't find the trigger in mysqlLaravel,通过迁移创建触发器成功运行,但在mysql中找不到触发器
【发布时间】:2018-08-21 05:44:34
【问题描述】:

我在 laravel 中使用迁移创建了一个触发器,它迁移成功,但我在数据库中找不到触发器,请有人帮忙。

我的 Laravel 版本是 5.5

我在下面添加了整个迁移文件。

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTrigger extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        $database           = config('database.default');
        $databaseUserName   = config('database.connections.'.$database.'.username');

        $definer = 'DEFINER=`'.$databaseUserName.'`@`%`';

        DB::unprepared('
            DROP TRIGGER IF EXISTS user_religion_details_AFTER_UPDATE;

            CREATE '.$definer.' TRIGGER user_religion_details_AFTER_UPDATE AFTER UPDATE ON `'.$databaseName.'.user_religion_details` 

            FOR EACH ROW

            BEGIN
                IF (NEW.religion_id <> OLD.religion_id) THEN
                    UPDATE users SET religion_id = NEW.religion_id  WHERE id = OLD.user_id;
                END IF;
            END
        ');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::unprepared('DROP TRIGGER `user_religion_details_AFTER_UPDATE`');
    }
}

请告诉我哪里做错了

【问题讨论】:

    标签: migration laravel-5.5 database-trigger laravel-migrations


    【解决方案1】:

    试试:

    public function up()
    {
        $database           = config('database.default');
        $databaseUserName   = config('database.connections.'.$database.'.username');
    
        $definer = 'DEFINER=`'.$databaseUserName.'`@`%`';
    
        DB::unprepared('DROP TRIGGER IF EXISTS user_religion_details_AFTER_UPDATE');
        DB::unprepared('CREATE '.$definer.' TRIGGER user_religion_details_AFTER_UPDATE AFTER UPDATE ON `'.$databaseName.'.user_religion_details` 
            FOR EACH ROW
                BEGIN
                IF (NEW.religion_id <> OLD.religion_id) THEN
                    UPDATE users SET religion_id = NEW.religion_id  WHERE id = OLD.user_id;
                END IF;
            END
        ');
    }
    

    让我知道它是否有效?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2013-05-30
      • 2011-02-03
      • 2016-09-19
      相关资源
      最近更新 更多