Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Редактирование представление / 18 сообщений из 18, страница 1 из 1
22.01.2022, 12:33
    #40128670
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Была одна таблица из которой удалили поле и перенесли его в другую таблицы. Теперь используется представление вместо таблицы

Код: sql
1.
2.
3.
4.
Select t.field1, t2.field2
From table1 t
Left join table11 t1 on t.id = t1.id1
Left join table2 t2 on t2.id = t1.ff




Как в этом представлении сделать редактирование поле field2?
...
Рейтинг: 0 / 0
22.01.2022, 13:45
    #40128682
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
INSTEAD OF триггера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.01.2022, 15:19
    #40128689
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
cptngrb
Была одна таблица из которой удалили поле и перенесли его в другую таблицы. Теперь используется представление вместо таблицы

Код: sql
1.
2.
3.
4.
Select t.field1, t2.field2
From table1 t
Left join table11 t1 on t.id = t1.id1
Left join table2 t2 on t2.id = t1.ff




Как в этом представлении сделать редактирование поле field2 ?


что это значит?
...
Рейтинг: 0 / 0
22.01.2022, 17:15
    #40128694
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Ролг Хупин,

Что не понятно? Нужно редактировать view как table. Когда соединение через join вопросов нет, а вот через left join есть. Дмитрий подсказал решение, в понедельник попробую решить
...
Рейтинг: 0 / 0
22.01.2022, 19:23
    #40128707
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
cptngrb
Что не понятно?


Гражданин не понимает сути проблемы, но лезет с советами.
Для неофитов это нормально.
...
Рейтинг: 0 / 0
22.01.2022, 20:53
    #40128709
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
dmdmdm, судя по количеству его сообщений он уже должен быть мастер йода))

Главное, что есть желание помочь
...
Рейтинг: 0 / 0
22.01.2022, 20:56
    #40128710
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
cptngrb

... Дмитрий подсказал решение, в понедельник попробую решить

попробуйте принять в расчет, что это решение, но решение хрустальное.

ваш триггер автоматически потеряется при любом последующем create or replace view.

Вы можете так делать, при условии, что после внедрения такого решения не только вы, а вообще все, кто полезет лапками в ваше представление будет обязан не забыть, в конце концов, применить ваш триггер.

Вы точно уверены, что сможете всегда определить - кто и когда ненароком или случайно дропнул ваш триггер, потому что ему в представлении надо было что-то подправить?
И да, с вероятностью 100%, первым таким человеком окажетесь вы сами.
...
Рейтинг: 0 / 0
22.01.2022, 21:00
    #40128711
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
dmdmdm
cptngrb
Что не понятно?


Гражданин не понимает сути проблемы, но лезет с советами.
Для неофитов это нормально.


кто же этот "гражданин"?
...
Рейтинг: 0 / 0
22.01.2022, 21:16
    #40128714
ASNexus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
booby
cptngrb

... Дмитрий подсказал решение, в понедельник попробую решить

попробуйте принять в расчет, что это решение, но решение хрустальное.

ваш триггер автоматически потеряется при любом последующем create or replace view.

Вы можете так делать, при условии, что после внедрения такого решения не только вы, а вообще все, кто полезет лапками в ваше представление будет обязан не забыть, в конце концов, применить ваш триггер.

Вы точно уверены, что сможете всегда определить - кто и когда ненароком или случайно дропнул ваш триггер, потому что ему в представлении надо было что-то подправить?
И да, с вероятностью 100%, первым таким человеком окажетесь вы сами.


Так проблема может возникнуть только в случае неорганизованности процессов разработки. И то, самое страшное, что грозит, это после какого-то обновления представления (и дропа триггера, соответственно), операции апдейт будут падать - тот, чьё обновление к этому привело, хочешь-не хочешь, вынужден будет триггер сохранять и поддерживать.
Естественно, в нормальных условиях это выявляется на этапе тестирования, а не в проде.
...
Рейтинг: 0 / 0
22.01.2022, 21:27
    #40128716
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
ASNexus,


Сначала надо хотя бы знать, что модификация представления убивает триггер.
А уж страшно оно или нет - это результат оценки такого знания.
...
Рейтинг: 0 / 0
22.01.2022, 22:33
    #40128727
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
А нет никакого механизма предупреждать разработчика о бережном отношении к представления. Например, как checking exception Java?
...
Рейтинг: 0 / 0
22.01.2022, 22:34
    #40128728
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Или триггер будет INVALID и разработчик это легко может в БД смотреть?
...
Рейтинг: 0 / 0
22.01.2022, 22:45
    #40128729
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
cptngrb
Или триггер будет INVALID и разработчик это легко может в БД смотреть?

нет .
Его просто не будет, он дропнется , если кто-то "случайно" применит create or replace view.
Смотреть можно, увидеть уже ничего нельзя - его больше нет .
...
Рейтинг: 0 / 0
22.01.2022, 23:00
    #40128733
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
cptngrb
А нет никакого механизма предупреждать разработчика о бережном отношении к представления. Например, как checking exception Java?

единственный известный мне способ - завести логирование объектов бд, с целью последующего расстрела всякого,
кто полезет в ваше представление.
А на своем носу зарубить -, что никакие - случайные или целенаправленные изменения представления не могут далее происходить,
без обязательного завершающего применения триггера.
Встав на эту дорогу однажды, вы всегда далее обязаны производить модификацию таким скриптом, который обязательно завершается восстановлением вашего триггера.

Это может работать, если вы знаете как верить в то, что ни сопереживающий вашему делу товарищ,
ни любопытствующий пользователь вашей "системы", вам точно ничего не сломают, а если сломают, то вы, как минимум,
теперь точно знаете, что именно это может и, по вероятности, будет ломаться в первую очередь.
...
Рейтинг: 0 / 0
22.01.2022, 23:20
    #40128736
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Код: plsql
1.
2.
3.
4.
5.
create or replace view myView
as
select -- Не потеряй триггер ИнстедОфТриггер1
       t.field1,
       ****
...
Рейтинг: 0 / 0
22.01.2022, 23:23
    #40128737
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Если кто-то решил заменить редактируемое представление нередактируемым - это его
собственное решение и, соответственно, все его (решения) последствия - на его
совести.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.01.2022, 23:26
    #40128738
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
Dimitry Sibiryakov
Если кто-то решил заменить редактируемое представление нередактируемым - это его
собственное решение и, соответственно, все его (решения) последствия - на его
совести.
я всегда пытаюсь минимизировать риски потерь, в т.ч. и доп. комментариями
...
Рейтинг: 0 / 0
23.01.2022, 22:52
    #40128880
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редактирование представление
andreymx
Код: plsql
1.
2.
3.
4.
5.
create or replace view myView
as
select -- Не потеряй триггер ИнстедОфТриггер1
       t.field1,
       ****


Хорошая подсказка.
Поможет хотя бы при использовании GUI.

В Oracle 21c всё осталось по-прежнему без изменений:
OR REPLACESpecify OR REPLACE to re-create the view if it already exists. You can use this clause to
change the definition of an existing view without dropping, re-creating, and regranting
object privileges previously granted on it.

INSTEAD OF triggers defined on a conventional view are dropped when the view is recreated.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Редактирование представление / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]