|
|
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Всем привет. Можно ли, в тригере при вставке добавлять новую или обновить нужную строку? например , если (выражение) равно true, то вставляем новую запись если нет то обновляем нужную запись если да то пример скинте плиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 10:29 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
RTFM PL/SQL Triggers (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 10:33 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Суть такова, что перед вставкой я проверяю, есть ли в этой таблице такая же запись, если да то я не создаю новую запись а просто делаю update существующей. И почему то при select к этой таблице в тригере exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:00 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Убираю Код: plsql 1. и все ок... если например сделать с select к другой таблице: Код: plsql 1. то все ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:06 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
iv_roman_vlСуть такова, что перед вставкой я проверяю, есть ли в этой таблице такая же запись, если да то я не создаю новую запись а просто делаю update существующей. И почему то при select к этой таблице в тригере exception.Потому что не понимаешь простых вещей. Выкинь свой говнокод подальше и прислушайся к шкодеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:19 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Elic, MERGE для того что бы кастомно склеить две таблицы по ключу. У меня же имеется запрос в котором есть строки с одинаковыми ключами. И мне надо эти строки "схлопнуть" в одну, записав недостающие данные либо из одной либо из другой. Попробую конечно MERGE скормить запрос сам на себя, посмотрим что из этого выйдет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:31 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
iv_roman_vlУ меня же имеется запрос в котором есть строки с одинаковыми ключами. И мне надо эти строки "схлопнуть" в одну, записав недостающие данные либо из одной либо из другой.Быдло-мышление. Не создавай "дублей" в данных - не придётся мучаться, чтобы от них избавиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:36 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
ElicНе создавай "дублей" в данных - не придётся мучаться, чтобы от них избавиться.Иногда дубли создаются одними, а убирать приходится другим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:40 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Elic, Во первых, эти данные из другой системы. Во вторых, это не дубли. В сторонней системе это две отдельные записи, несущие свою смысловую загрузку. В нашей системе данные по этим строкам совмещаются в одну запись. Так как эти "дубли", как ты их называешь, дополняют друг друга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:41 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
iv_roman_vlВ нашей системе данные по этим строкам совмещаются в одну запись.Ну так совмести их сразу в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 11:42 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Есть еще INSTEAD OF триггеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 12:02 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровЕсть еще INSTEAD OF триггерыОригинальный способ сделать group by. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2018, 12:15 |
|
||
|
Тригер, вставка по условию
|
|||
|---|---|---|---|
|
#18+
Пробовал MERGE, как я понял он предназначен для вставки/обновления данных в таблицу с уже существующими данными, по полям базовой и донорской таблицы. У меня же изначально пул данных приходит одним запросом с внешней среды и мне надо внутри этих данных, по некоторым условиям, схлопнуть строки. Соответственно у меня нет базовой таблицы, с которой сравнивать поля. Можно конечно заморочится и написать два одинаковых запроса к внешней системе и применить к ним MERGE. Но постольку поскольку, запрос адский по составу и по времени выполнения. Этот вариант не подошел. Пробовал INSTEAD OF, На сколько я понял, он проверяет дубли для инсертов внутри тригера(на внешние таблицы). А мне нужно проверять дубли на самом инсерте в текущую таблицу. Решил задачу, другим способом. Может примитивно, но работает быстро. 1) Запрос ко внешним ресурсам и запись результата в таблицу t1. 2) Запрос к таблице t1: ищу те строки которые надо схлопнуть, при чем именно те которые будут нести доп информацию. из всех записей t1 вычитаю выше найденные строки. Селектом беру результат по разнице и селектом по ключам достаю значения ранее вычтенных строк. Так же плюс в том, что проект на начальной стадии и ключи поиска будут меняться в процессе. И из за простоты решения не составить труда менять ключи поиска. А то я представил как я это буду делать с group by , MERGE, INSTEAD OF на минуту стало плохо) Всем спасибо за участие. Я не гуру sql так что может не правильно воспринял предложенные методы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 07:40 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39675983&tid=1883715]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
205ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 547ms |

| 0 / 0 |
