我有一个简单的表:
CREATE TABLE `accounting`.`People` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
`Property_number` VARCHAR(45) NULL ,
`People_at_Location` INT NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `accounting`.`People` (`Name`, `Property_number`, `People_at_Location`) VALUES ('Jim', '13', '2');
INSERT INTO `accounting`.`People` (`Name`, `Property_number`) VALUES ('Tony', '16');
INSERT INTO `accounting`.`People` (`Name`, `Property_number`) VALUES ('Alice', '9');
INSERT INTO `accounting`.`People` (`Name`, `Property_number`, `People_at_Location`) VALUES ('Martha', '13', '2');
INSERT INTO `accounting`.`People` (`Name`, `Property_number`) VALUES ('Vandy', '');
在我们的数据中,我们知道每一行/记录的名称。但是当我们开始时,我们没有 Property_number。当我们收到客户发来的电子邮件时,我们会得到他们的 Property_number,并更新记录。
我们真正需要的是一个触发器,它查看 Property_number 并查询数据库中有多少其他记录具有相同的属性编号,并更新所有记录,因为我们现在知道该 Property_number 上有一个额外的人。
例如(给定上面的示例数据)它看起来像:
ID Name Property_number People_at_location
1 Jim 13 2
2 Tony 16 Null
3 Alice 9 1
4 Martha 13 2
5 Vandy Null Null
所以我们从 Vandy 那里获得了新信息,告诉我们她在 property_number 13 中。我们想要更新记录 1、4 和 5 以反映更新后的 People_at_location 计数。
ID Name Property_number People_at_location
1 Jim 13 3
2 Tony 16 Null
3 Alice 9 1
4 Martha 13 3
5 Vandy 13 3
这个触发器会是什么样子?