|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Нужно в Триггере сделать выборку (обычный Select) и в зависимости от результата выполнить операцию Вставки записи в другую таблицу (Insert) или обновить существующую запись (Update). Возможно ли такое сделать в СкуЛайте? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2015, 22:05 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2015, 22:34 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
То есть надо будет создавать 2-а триггера? 1. WHEN EXISTS 2. WHEN NOT EXISTS ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2015, 23:17 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
А insert or update уже отменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 00:44 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
insert or update вставляет/обновляет в зависимости от ситуации в обновляемой таблице, а ТСу нужно выполнить операцию Вставки записи в другую таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 01:56 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
MrCatinsert or update вставляет/обновляет в зависимости от ситуации в обновляемой таблице, а ТСу нужно выполнить операцию Вставки записи в другую таблицуЧитать надо до конца: "выполнить операцию Вставки записи в другую таблицу (Insert) или обновить существующую запись (Update)." ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 05:45 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Да, а условие высчитывается по первой таблице. Т.е. не "добавить, а если там нет - обновить", а "в зависимости от выборки из левой первой таблицы - или вставить, или обновить во второй". Хотя, конечно, выглядит подозрительно, я бы ещё послушал как пришли к этим двум таблицам при проектировании БД, что в них хранится. Может, база спроектирована криво. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 07:55 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Оперативные остатки. Есть таблица Движение товара . При изменении этой таблицы надо вставить запись в таблицу Оперативные остатки . Если в таблице Оперативные остатки уже есть запись (ТоварID, СкладID, К-во), то обновить её (изменив к-во +/-). Иначе внести новую запись, т.к. может добавили новый Склад/Товар и таб О.С. ещё не содержит по ним инфу. Структуры таблиц давать не буду, они стандартные. Вот таки дела. Создал несколько триггеров: WHEN NOT EXISTS (в таб о.с. записи) - тогда INSERT (ТоварID, СкладID, К-во) WHEN EXISTS (в таб о.с. записи) - тогда, только, UPDATE (+/- К-во) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 11:30 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Пф-ф, это в чистом виде insert or update: При изменении этой таблицы (Движение товара) надо вставить запись в таблицу Оперативные остатки. Если в таблице Оперативные остатки уже есть запись (ТоварID, СкладID, К-во), то обновить её (изменив к-во +/-). Иначе внести новую записьТ.е. Вы проверяете наличие записи в той же таблице, в которую вставляете, а не в другую таблицу, как указано в первом посте. Второй триггер выкинуть, WHEN в оставшемся выкинуть, тело триггера заменить на insert or update. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 14:28 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Триггер на события таблицы "Движение товара": добавление (INSERT) или удаление (DELETE) записи Изменения/Вставка записи в таблицу "Оперативные остатки". Не понимаю, как обойтись без "WHEN" ... ? Надо же проверить, если ли запись в таблице "Оперативные остатки", а для этого используется "WHEN". А можете подсказать, как заменить "WHEN" на "insert or update" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
где DirNomenID - ID-шник Товара (Номенклатура товара) Party, PartyStock - партии на складе, в данному случае выполняют роль таблиц движения. Триггер на события таблицы "PartyStock". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 17:31 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Надо же проверить, если ли запись в таблице "Оперативные остатки" именно так и работает insert or update. Это гибрид вставки и обновления. Если в таблице уже есть запись с тем же набором данных, то произойдёт её обновление, если ещё нет - в таблице появится новая запись. В SQLite эта инструкция называется немножко по-другому, видимо потому, что можно выбрать реакцию на конфликт : insert or replace into table(col1, ...) values (val1, ...); replace сработает в случае конфликта первичного ключа или ограничения уникальности, insert сработает в отсутствие конфликтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 18:03 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
MrCatinsert or update А где можно глянуть пример использования insert or update ? Потому, что тут не могу найти, гугл тоже не даёт результатов ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 19:15 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Да, и мне надо при UPDATE увеличить количество: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 19:28 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Методичка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Д/з: а как себя поведёт такой же запрос с rowid к таблице без PRIMARY KEY или UNIQUE? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 19:55 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
И энто, забрамшись после вечернего купания под одеяло, да потягивая перед сном горячее молоко с мёдом, извольте ознакомиться с тутошними синтаксическими диаграммами. Они - ей-богу! - не кусаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 20:00 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Тьфу, а я ищу "insert or update" ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 20:13 |
|
В Trigger сделать Select и в зависимости от результата Insert или Update
|
|||
---|---|---|---|
#18+
Upd: coalesce, разумеется, надо за select..where вытаскивать, иначе он на нулевой выборке не сработает и милиционер получится вернётся null. т.е. получится coalesce((select..), default). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 20:28 |
|
|
start [/forum/topic.php?fid=54&msg=38995429&tid=2008666]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 400ms |
0 / 0 |