我試圖使觸發器在某些條件下觸發條件 在UPDATE之後,在以特定字符串開頭的表(如「 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
;
觸發應使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):您有一個錯誤的SQL語法;檢查與你的MySQL服務器版本相對應的手冊,在'WHERE id = NEW.id;'附近使用正確的語法。 END第2行
你能幫我嗎?
SQL失敗1362:在觸發器 –
之後不允許更新NEW行,然後我將其更改爲BEFORE UPDATE。:SQL Fehler(1064):您的SQL語法有錯誤;檢查與你的MySQL服務器版本相對應的手冊,在'WHERE id = NEW.id;'附近使用正確的語法。 END'在第2行*/ –
嗯......我不確定AFTER UPDATE(正如我在發佈時所說的那樣),但是BEFORE UPDATE應該可以工作。正如您在錯誤消息中看到的那樣,它是您添加的部件上的語法錯誤。如果您希望我(和其他人)檢查它並提供幫助,請檢查您的語法或發佈您的代碼。 –