簡體   English   中英

如何使用觸發器(MySQL)在插入時更改同一表的字段值

[英]How to change a field value of the same table on insert using trigger (MySQL)

我有一個“example_table”,它有幾個字段。 當 example_field='Faiyaj' AND example_field_two Like '096%' 然后我想設置 example_field = 'Faiyaj11' 時,我想更改插入到同一個表中的 'example_field' 值。

這是我的遷移表(UP 函數):

public function up()
{
   $this->create('example_table', function (Blueprint $table) {

       $table->bigIncrements('id');
       $table->integer('user_id')->unsigned();
       $table->text(description, 1600);
       $table->string('example_field');
       $table->string('example_field_two');
       $table->timestamp('created_at');

   });


   $insertTrigger = "CREATE TRIGGER example_table_generator_insert AFTER INSERT ON example_table
FOR EACH ROW
BEGIN
IF EXISTS(SELECT * FROM example_table WHERE example_field='Faiyaj' AND example_field_two Like '096%') THEN
UPDATE `example_table` SET `example_field` = 'Faiyaj11';
END IF;
END;
";


   $this->unprepared($insertTrigger);

}

我在遷移表中使用了上述觸發器,但它不起作用,也沒有在數據庫中插入任何值。 我曾以多種方式嘗試過觸發器,但都失敗了。 (插入前/插入后)

我今天已經解決了這個問題。 這是解決方案:

$insertTrigger = "CREATE TRIGGER example_table_generator_insert BEFORE INSERT ON example_table
FOR EACH ROW IF NEW.example_field = 'Faiyaj' AND NEW.example_field_two LIKE '096%' THEN SET NEW.example_field = 'Faiyaj11';
END IF;";

$this->unprepared($insertTrigger);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM