mysql - 在插入条件下触发而不插入行

标签 mysql triggers phpmyadmin

我正在使用 mysql,当有条件时,我需要触发从表中的插入。

将要插入到 Table1 上的信息是用户元数据,当有新用户注册时,它会插入 8 个新行。我希望当metadata_key是'first name'

时触发触发器

我的问题是,如果将此条件放入触发器中,则永远不会插入此,因此信息丢失并且触发器永远不会触发

这些是我的表格:

+---------------------Table1---------------+ Table which fires the trigger AFTER INSERT 
+ user_id | meta_key     | meta_value      +
+ -----------------------------------------+
+      1  | first_name   | luke            +
+      1  | second_name  | skywalker       +
+------------------------------------------+

' 
+-----------------Table2------------------+ Where I need to INSERT
+ post_author | post_content | post_title +
+ ----------------------------------------+
+        0    | hub         | luke        +
+-----------------------------------------+

代码

DROP TRIGGER IF EXISTS  `post` ;

CREATE DEFINER =  `anagomez`@`localhost` TRIGGER `post` AFTER INSERT ON  `table1` 

FOR EACH ROW INSERT 

if(new.meta_key='first_name') then

insert into table2(post_author,post_content,post_title) values ('0','hub',new.meta_value);

end if

有什么建议吗?

最佳答案

您的触发器几乎是正确的,但有一个小问题,它应该看起来像

delimiter //

CREATE DEFINER =  `anagomez`@`localhost` TRIGGER `post` AFTER INSERT ON  `table1` 

FOR EACH ROW  
BEGIN

   if(new.meta_key='first_name') then

     insert into table2(post_author,post_content,post_title) values ('0','hub',new.meta_value);

   end if;
end; //
delimiter ;

我已经添加了分隔符,问题是您缺少 BEGIN,而是添加了 INSERT

关于mysql - 在插入条件下触发而不插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222817/

相关文章:

sql - Postgres 触发器函数 ON CONFLICT 更新另一个表

plsql - ORA-04091 : table name is mutating

mysql - MYSQL 中的 session 变量名称在 CONCAT 语句中逐字复制(而不是其值)

mysql 长度限制

mysql - 创建触发器 phpmyadmin 中的问题

Java - 使用 PreparedStatement 在 mysql 数据库中存储 UTF-8 字符(特别是俄语字符)

php - 更新数据到相关表yii2

php - 表从 phpmyadmin 中删除

php - 通过匹配子数组值合并 2 个关联数组?

mysql - 寻找一种方法来定位数据库中以特定字符开头的值,然后删除该字符