Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表
Posted
技术标签:
【中文标题】Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表【英文标题】:Mysql : I want to create a trigger which will insert data into user access permission table based on employee table and categories table 【发布时间】:2015-12-18 00:24:29 【问题描述】:我有三个表:- category 、employee 和 user_access_permission 。我想创建一个在添加新类别时触发的触发器,在 user_access_permission 中为每个员工 id 插入值。user_access 的默认值为 0。
分类表:-
CREATE TABLE IF NOT EXISTS `categories` (
`category_id` int(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(100) NOT NULL,
`section_id` int(11) NOT NULL,
UNIQUE KEY `category_id` (`category_id`),
UNIQUE KEY `category_name` (`category_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
员工表:-
CREATE TABLE IF NOT EXISTS `employee` (
`employee_id` int(11) NOT NULL AUTO_INCREMENT,
`emp_pass` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`employee_id`),
UNIQUE KEY `email_UNIQUE` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ' AUTO_INCREMENT=1;
用户访问权限表:-
CREATE TABLE IF NOT EXISTS `user_access_permission` (
`uap_id` int(10) NOT NULL AUTO_INCREMENT,
`section_id` int(10) NOT NULL,
`category_id` int(10) NOT NULL,
`employee_id` int(10) NOT NULL,
`access_level` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`uap_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
我正在写这样的触发器:-
CREATE TRIGGER update_permssion_on_add_category
AFTER INSERT
ON categories FOR EACH ROW
insert into user_access_permission(section_id,category_id,employee_id,access_level) select(new.section_id,new.category_id,employee_id,0) from employee
但我没有把事情做对。请帮忙
【问题讨论】:
【参考方案1】:你有
select(new.section_id,new.category_id,employee_id,0) from employee
但是 section_id 和 category_id 来自类别表。
我建议将其更改为“来自类别”,但问题是您从哪里获得employee_id 编号?它不在类别表的原始插入语句中的任何位置。除非您决定在每次触发触发器时将其设为某个默认值。
【讨论】:
以上是关于Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表的主要内容,如果未能解决你的问题,请参考以下文章