我有两张table。
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部门的员工总数。如果我能得到你的一些建议就太好了。
2条答案
按热度按时间9fkzdhlc1#
你似乎想要一个更新触发器,而不是插入触发器。插入触发器将是:
更新触发器更像:
h79rfbju2#
在insert触发器中没有“old”…因为您正在插入一行,而不是更新一行。该行没有以前的版本,因为它以前从未存在过。您只需使用新创建的行中的department\u id
new
相反。你不需要if
因为没有什么可比的:另请参见如何获取触发器的插入值
p、 通过使用实际行的计数而不是简单的增量来更新它可能更安全。我担心如果在几乎同一时间更改了许多行,它可能会倾斜。这是否会导致问题,可能值得检验。
p、 另外,我假设您也计划为相同的目的添加更新和删除触发器,如果您还没有这样做的话。