特定の条件の条件下で起動するトリガーを作成しようとしています 更新後、 A_ "とする。"Table_"で始まる表の更新後に起動するトリガーを作成する方法
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
;
トリガーが更新され、この行の列「C」にこの合計を書いた行のインデックスまでのSUM(列「A」)マイナスSUM(列「B」)を作るべきです。
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):あなたは、あなたのSQL構文でエラーが発生しています。正しい構文がWHERE id = NEW.idの近くで使用するようにMySQLサーバのバージョンに対応するマニュアルを確認してください。 END '2行目
お手伝いできますか?
SQLエラー1362:NEW行の更新は、トリガー後に実行されません –
その後、私はそれをBEFORE UPDATEに変更しました。:SQL Fehler(1064):SQL構文にエラーがあります。正しい構文がWHERE id = NEW.idの近くで使用するようにMySQLサーバのバージョンに対応するマニュアルを確認してください。 END 'at line 2 */ –
まあ... AFTER UPDATEについてはわかりませんでしたが(私が投稿したときに言ったように)、BEFORE UPDATEは機能するはずです。エラーメッセージに表示されているとおり、追加した部分の構文エラーです。私(そして他の人)がそれをチェックして助けてくれるようにするには、構文をチェックしてください。 –