user表中新增一条用户信息触发设置相应字段的默认值

在user表中新增一条用户信息后,通过触发器设置trainid和poorpublicid的默认值为id值

我的user用户表结构

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `auth_key` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `password_hash` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `password_reset_token` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `status` smallint(6) NOT NULL DEFAULT '10',
  `created_at` int(11) NOT NULL,
  `updated_at` int(11) NOT NULL,
  `poorpublicid` int(11) DEFAULT NULL COMMENT '公益性岗位安置ID',
  `trainid` int(11) DEFAULT NULL COMMENT '培训用户ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `password_reset_token` (`password_reset_token`),
  KEY `poorpublicid` (`poorpublicid`) USING BTREE,
  KEY `trainid` (`trainid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4;

我写的触发器代码是这样的:

DROP TRIGGER IF EXISTS `insertevent`;
DELIMITER ;;
CREATE TRIGGER `insertevent` AFTER INSERT ON `user` FOR EACH ROW BEGIN 
declare id int;
set `user`.trainid=id;
END
;;
DELIMITER ;

但是这样怎么也执行不了,不知道如何写才对头,请各位大神帮忙完善下,谢谢!

阅读 2.2k
1 个回答

问题描述要清晰,你都不说清楚你要干嘛让别人怎么回答你?
这里只根据你的set改一下,不知道是不是你要的效果!
DROP TRIGGER IF EXISTS insertevent;
DELIMITER ;;
CREATE TRIGGER insertevent before INSERT ON user FOR EACH ROW
BEGIN
set new.trainid=new.id;
END
;;
DELIMITER ;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题