Появилась необходимость в создании триггера , но появились сложности в реализации. Путём некоторого гугления был собран вариант того как он по идее должен выглядеть, но phpmyadmin на него ругается. Добавляю через окошко с триггерами , а не полной командой. Тригге добавляется к первой таблице Код (Text): SET @пзначение := ''; SELECT `значение` INTO @пзначение FROM `вторая_таблица` WHERE `идентификатор`= new.идентификатор order by `time` desc limit 1; IF (@пзначение != new.значение) THEN INSERT into `вторая_таблица` (`идентификатор`, `значение`, `time`) VALUES(new.идентификатор , new.значение , new.time); Цель , при обновлении строки в первой таблице , добавлять строку во вторую (типо лога) , но с условием , что значение последней записи во второй таблице для данного идентификатора не совпадает с тем что сейчас находиться в первой таблице для этого идентификатора. Честно говоря не совсем понимаю в чем проблема, возможно что то очевидное , но для того что бы понять надо взглянуть свежим взглядом. Да и вообще не гуру синтаксиса mysql, пробывал по разному `` ставить , так как в разных примерах бывают вариации в духе `new`.`название`, new.`название`, new.название.
первый вариант канонический, остальные два от лукавого и при определенных стечениях обстоятельств могут не работать.
@RainBowDash, я вообще не понимаю зачем тут триггер кроме как для понта. Более того, я его даже не вижу у вас . Триггер начинается со слов "CREATE TRIGGER ..."
я же написал , что через диалоговое окно phpmyadmin его вставляю. Там нужно только тело и выбрать условия. Спойлер: картинка
ну вот... И кому верить ? В интернетах вроде даже никто не объясняет этот момент , все просто пишут по своему. В любом случае я думаю тут проблема глубже чем неправильные скобочки. Нужен гуру мускуля в тред.
@RainBowDash, а чЁ там END IF не нужен? Типа однострочная форма, как в Бейсике что ли? И чЁ за мания все SELECT'ами проверять? Это же полная фигня в большинстве случаев. Пробуйте INSERT IGNORE, INSERT... ON DUPLICATE KEY UPDATE... (не вникал, что вам конкретно нужно, но уверен, что не SELECT/IF/INSERT). --- Добавлено --- Оф. документацией пользуйтесь или на крайняк материалами проверенных авторов, а не всякой хнОй --- Добавлено --- ...вроде советов на этом и тем более др. форумах
Не ну на "правильность" не претендую , нужно что бы работало , а там посмотрим. Что бы работал ON DUPLICATE KEY UPDATE нужен уникальный ключ, коим то значение не может являться. Насчет остального сказать не могу. Но вроде как там варианты у духе либо вставить так либо вот так, а мне нужно никак во втором случае. Можно конечно пыхом все это делать , но я зацепился за триггеры, просто подумал что по любому придумали какие то "упрощатели" , что бы база данных сама все делала и оно так и есть. Осталось только усложнить жизнь тем что бы понять как эти упрощатели работают
Вот тут не понятно. Если мы обновляем значение в первой таблице оно априори не может быть равным ранее записанному значению в другой таблице. Лучше уйти от абстракции, показать дампы таблиц и рассказать с примерами настоящих значений, что где обновляется и что где вставлять или не вставлять.