我正在尝试在以特定字符串(例如“A_”)开头的表上创建一个触发器,该触发器在 UPDATE 之后的某些条件下触发。
CREATE TABLE `Table_TEST` (
`id` INT(11) NULL DEFAULT NULL,
`A` INT(11) NULL DEFAULT NULL,
`B` INT(11) NULL DEFAULT NULL,
`C` INT(11) NULL DEFAULT NULL
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;
触发器应使 SUM(列“A”)减去 SUM(列“B”)直到更新的行的索引,并将此 SUM 写入该行的列“C”。
CREATE DEFINER=`root`@`localhost`
TRIGGER `Table_TEST_before_insert` BEFORE UPDATE ON `Table_TEST` FOR EACH ROW
BEGIN
SET new.C = (SUM(new.A)-SUM(new.B));
END
此触发器不起作用并带来此故障
UPDATE `Testdb`.`Table_TEST` SET `b`='4' WHERE `id`=1 LIMIT 1;
/* SQL Fehler (1111): Invalid use of group function */
在此之后,它应该根据给定的公式更新该索引之后的“C”列中的所有其他值,直到相应的索引。
现在我在 php 中编写了一个函数,我在每次更新数据库后附加到我的 php 脚本中。但它实际上不是我想要的。
我希望这是一个例程/触发器。
我尝试过的看起来像这样,但请注意它不起作用
CREATE DEFINER=`root`@`localhost`
TRIGGER `TABLE_1_before_update` BEFORE UPDATE ON `TABLE_1` FOR EACH ROW
BEGIN
SET new.C = (SUM(new.A)-SUM(new.B)) WHERE id=NEW.id;
END
我得到的失败是: SQL Fehler (1064): You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以获取在 'WHERE id=NEW.id; 附近使用的正确语法;END'在第 2 行
你能帮我么?