我正在使用 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/