在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 ;
但是这样怎么也执行不了,不知道如何写才对头,请各位大神帮忙完善下,谢谢!
问题描述要清晰,你都不说清楚你要干嘛让别人怎么回答你?
这里只根据你的set改一下,不知道是不是你要的效果!
DROP TRIGGER IF EXISTS
insertevent
;DELIMITER ;;
CREATE TRIGGER
insertevent
before INSERT ONuser
FOR EACH ROWBEGIN
set new.trainid=new.id;
END
;;
DELIMITER ;