Ich versuche, einen Trigger zu erstellen, der unter bestimmten Bedingungen NACH einem UPDATE bei Tabellen beginnt, die mit einer bestimmten Zeichenfolge wie "beginnen A_ "zum Beispiel.So erstellen Sie einen Trigger, der nach dem Update nur für Tabellen ausgelöst wird, die mit "Table_" beginnen
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
;
Der Trigger sollte die Summe (Spalte „A“) minus SUM (Spalte „B“) stellt bis zum Index der Zeile, die aktualisiert wurde, und schreibt diese Summe in der Spalte „C“ in dieser Zeile.
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
Dieser Trigger funktioniert nicht und bringt dieses Scheitern
UPDATE `Testdb`.`Table_TEST` SET `b`='4' WHERE `id`=1 LIMIT 1;
/* SQL Fehler (1111): Invalid use of group function */
Danach sollten sie alle anderen Werte in Spalte „C“ aktualisieren die nach der gegebenen Formel bis zu, dass nach diesem Index kommen jeweiliger Index.
Gerade habe ich eine Funktion in PHP geschrieben, die ich nach jedem Update in der Datenbank in meinem PHP-Skript anfügen. Aber es ist in der Tat nicht was ich will.
Ich möchte dies als Routine/Trigger.
Was habe ich versucht, sieht wie folgt aus, aber darüber im Klaren sein, dass es nicht
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
Arbeits
The Failure ich erhalte, ist: SQL Fehler (1064): Sie haben einen Fehler in der SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, nach der richtigen Syntax für die Verwendung in der Nähe von 'WHERE id = NEW.id; ENDE bei Zeile 2
Können Sie mir bitte helfen?
SQL Fehler 1362: Aktualisierung der neuen Zeile ist nicht erlaubt in nach Trigger –
, dann habe ich es auf VOR UPDATE.: SQL Fehler (1064): Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, nach der richtigen Syntax für die Verwendung in der Nähe von 'WHERE id = NEW.id; END 'at line 2 */ –
Nun ... Ich war mir nicht sicher über das AFTER UPDATE (wie ich schon sagte, als ich es gepostet habe), aber das VOR UPDATE sollte funktionieren. Wie Sie in der Fehlermeldung sehen, ist es ein Syntaxfehler auf dem Teil, den Sie hinzugefügt haben. Überprüfe deine Syntax oder poste deinen Code, wenn ich (und andere) es überprüfen und helfen soll. –