mysql - 如何使用触发器(MySQL)在插入时更改同一表的字段值
问题描述
我有一个“example_table”,它有几个字段。当 example_field='Faiyaj' AND example_field_two Like '096%' 时,我想更改插入时的 'example_field' 值到同一个表中,然后我想设置 example_field = 'Faiyaj11'。
这是我的迁移表(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);
推荐阅读
- html - 检查 CSS 标题属性值是否为空
- d3.js - 条形图不在轴内
- window.open - Angular 6在新窗口中打开网址
- nativescript - Nativescript VideoRecorder
- arrays - 遍历 puppet 中的哈希数组
- mule - jdk 1.7 和 1.8 是否支持 mule 3.4
- java - 从 html 字符串中删除强标记
- php - single-product.php woocommerce中有一条通知,图片在描述中
- point-of-sale - 将任何打印机与 squareup API 集成 - 销售点系统/KDS
- javascript - 如何在按钮单击时将文本添加到模态