1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
1 | |
Контроль UPDATE триггер. Доступ к данным, которые в запросе25.06.2013, 15:07. Показов 1703. Ответов 8
Метки нет (Все метки)
При обновлении некоторых данных требуется отдельное подтверждение.
То есть при одинаковом запросе надо или обновить данные или запретить их. Как это реализовать одним и тем же триггером не догадываюсь. Создал таблицу для временного хранения данных и представление на обновляемую таблицу. В случае обновления без подтверждение отправляю обновление на представление и триггером Instead of update хочу сохранить данные во временную таблицу(с подтверждением беру данные со временной таблицы и напрямую отправляю в изменяемую таблицу). Однако изменений в представлении нет, потому в таблицах inserted и deleted не попадают новые данные. Как получить эти новые данные? или есть другой способ реализовать поставленную задачу?
0
|
25.06.2013, 15:07 | |
Ответы с готовыми решениями:
8
Система складского учёта, доступ к данным и контроль над утилитами Доступ к данным, которые находятся в другой форме Как получить доступ к данным класса, которые являются элементом вектора? Триггер на update |
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
||||||
25.06.2013, 15:56 | 2 | |||||
Если правильно понял, что требуется:
1
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|||||||||||
25.06.2013, 17:25 | 3 | ||||||||||
я думаю, предполагалось нечто иное
вроде вот этого:
1
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
||||||
25.06.2013, 17:41 [ТС] | 4 | |||||
в представлении простая выборка из целевой таблицы.
Добавлено через 10 минут @cygapb-007, дело в том, что при выполнении merge в inserted Хранятся не те значения, которые необходимо сохранить!
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||||||||||||
25.06.2013, 17:56 | 5 | |||||||||||||||
По шагам:
1. Исполнитель выполняет
2. Контролер видит, что в очереди появилось новая строка (1,100), причем видит через VIEW в виде (1, 10, 100) 3.а. Контролер одобряет изменение и выполняет
3.б. Контролер отклоняет изменение и выполняет
Что не так? Добавлено через 4 минуты да, еще вариант забыл: 3.в. Контролер изменяет неверное значение update dbo.Data set Value=150 where id=1 и видит, что данные в очереди изменились с (1,10, 100) на (1,10,150) Новое значение его устраивает, и он подтверждает корректировку, выполнив еще раз update dbo.Data set Value=150 where id=1
1
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
||||||
25.06.2013, 18:30 | 6 | |||||
В inserted находятся ровно те значения, которые сформированы инструкцией, приведшей к срабатыванию триггера.
В вашем случае не нужно никаких приседаний с вью и триггерами. Надо иметь две таблицы: "Макет цен" и "Действующие цены". Вся работа по изменению цен ведется напрямую с таблицей "Макет цен". В "Действующие цены" данные попадают только после утверждения уполномоченным лицом позиций из "Макет цен". Это гораздо проще и легче сопровождаемо, чем попытки разрулить все возможные коллизии через вью с триггером. Добавлено через 2 минуты @cygapb-007, что произойдет, если Исполнитель дважды выполняет
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
||||||||||||||||
25.06.2013, 19:16 | 7 | |||||||||||||||
если интерфейс ему это позволит, то будет считаться, что второй раз он контролер(
ЯТД, либо user_id задействовать дополнительно, либо в интерфейсе исполнителя
Добавлено через 2 минуты зато плюс - если двое исполнителей внесли свои изменения по одной и той же позиции - в очереди будет зафиксировано только последнее... Добавлено через 7 минут еще как вариант - create table dbo.Data_QueuedForApprove (id int not null primary key, Value int, isChecked bit); с соответствующей обвязкой в триггере Добавлено через 29 минут как вариант, с учетом разных интерфейсов Исполнителя и Контролера:
Кликните здесь для просмотра всего текста
0
|
3499 / 2083 / 742
Регистрация: 02.06.2013
Сообщений: 5,078
|
|
25.06.2013, 19:18 | 8 |
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
25.06.2013, 19:34 | 9 |
с программным запретом повторной корректировки исполнителем - первый вариант проще)
с разными интерфейсами... наверное все же не совсем то же самое получилось... хотя да, похоже Добавлено через 3 минуты и в последнем варианте исправить новое значение нельзя, пока не будет очищена очередь, что может быть несколько неудобным, но - с внесением исправлений возникает недопустимая рекурсия в триггерах
0
|
25.06.2013, 19:34 | |
25.06.2013, 19:34 | |
Помогаю со студенческими работами здесь
9
Триггер Insert, Update Триггер на Insert/Update Триггер и Can't update table Нужен триггер на update Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |