【发布时间】:2018-11-28 11:04:26
【问题描述】:
我有两张桌子。
CREATE TABLE `departments` (
department_id INT(2) NOT NULL AUTO_INCREMENT,
department_name VARCHAR(30) NOT NULL,
total_employees INT(4),
PRIMARY KEY (department_id),
UNIQUE (department_name));
CREATE TABLE `employees` (
employee_id INT(4) NOT NULL AUTO_INCREMENT,
employee_email VARCHAR(30) NOT NULL,
employee_first_name VARCHAR(30) NOT NULL,
employee_last_name VARCHAR(30) NOT NULL,
department_name VARCHAR(30) NOT NULL,
PRIMARY KEY (employee_id),
UNIQUE (employee_email),
FOREIGN KEY (department_name)
REFERENCES departments (department_name)
ON DELETE CASCADE);
现在,假设我有一个部门是人力资源管理。 2名员工有人力资源管理部门。因此,我希望通过触发器获取部门表 2 的 total_employees 的值。如果我能得到你的一些建议,那就太好了。
【问题讨论】:
-
您实际上并不需要在字段中存储员工总数。您可以在您想知道它的时候使用查询中的 COUNT 来计算它。这是一种冗余的信息。如果您确实出于某种原因确实想存储它,那么是的,您可以编写一个触发器。但是......到目前为止,您尝试过做什么?你有什么问题?这不是免费的 write-my-code 或 do-my-research 服务。您可以轻松找到此类触发器的示例。这里不需要我们再提供教程了。
-
看,我不指望你解决我的问题,我礼貌地请教一些建议。
-
好的,谢谢。但从你之前写问题的方式来看,这并不清楚。我们无法读懂你的想法。无论如何,请使用“编辑”按钮将该代码和错误信息添加到问题本身中...... cmets 中的代码很难阅读,人们可能不会注意到它。评论仅用于要求澄清/提出简短建议,而不是添加对问题本身至关重要的内容。谢谢。
-
如果你不建议,请忽略,我想有人愿意建议。
-
在插入触发器中没有“旧”...因为您正在插入一行,而不是更新一行。该行没有以前的版本,因为它以前从未存在过。您可以使用
new在新创建的行中使用department_id。见stackoverflow.com/questions/25453535/…
标签: mysql sql rdbms database-trigger