Удаление повторяющихся строк в триггере в SQL - PullRequest
0 голосов
/ 18 октября 2018

Итак, я сделал table1 и table2 и триггер таким образом, чтобы при вставке в table1 данные вставлялись в table2 из table1.Затем я делаю еще один шаг с другим триггером, где после вставки в table2 он вставляет в другую таблицу, table3 с данными из table2.Триггер на месте - «FOR EACH ROW», поэтому, к сожалению, когда вторая вставка происходит в table1, она переходит в table2, и table3 считывает в новую, вторую строку И снова в первую строку.

В идеалечтобы предотвратить это или уменьшить влияние, имеет смысл удалить дубликаты в конце или в начале соответствующего триггера, чтобы не экспоненциально заполнять таблицы дублирующимися строками.Тем не менее, я не смог найти способ сделать это до сих пор в триггере.Это вообще возможно?Любая помощь?Таблицы также не имеют первичных или внешних ключей.Заранее спасибо.

Пример того, что я пробовал до сих пор:

DELETE FROM table2 WHERE rowid NOT IN (SELECT MIN(rowid) FROM table2 GROUP BY col1, col2, col3, ...);

Хотя я думаю, что это для SQLite?Поскольку я видел, что это работает для баз данных SQLite, тогда как здесь я просто получаю сообщение об ошибке, говорящее о том, что он не может распознать столбец rowid.

Я также пробовал WHERE NOT EXISTS во время вставки, которая работает для того, чтобы не вставлять дубликаты вВо-первых, мне нужно обновление как часть триггера, который изменяет некоторые значения столбцов, поэтому в этом случае он не будет работать, поскольку строки всегда будут отличаться от их начальной вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...