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:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表的主要内容,如果未能解决你的问题,请参考以下文章

纠正我在 mysql 触发器中的语法错误

使用数据库语句 有学生表和班级信息表,创建触发器,如果有学生转系,则相应系人数也一并修改。

MySQL?自连接

更新触发器..没有按预期工作?

实验十--- MySQL过程式数据库对象

如何将ACCESS的表和查询创建成动态的WEB?