powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner - перебрать колонки представления (View)
7 сообщений из 7, страница 1 из 1
PowerDesigner - перебрать колонки представления (View)
    #37149847
Alkatraz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Появилась необходимость написать триггеры на представления. В триггере необходимо при определенных условиях не упоминать определенные поля представления. Есть аналогичный шаблон триггера для таблицы, но конструкция перебора колонок не работает если перенести ее в триггер на представление.

Вот код из шаблона триггера на таблицу, он успешно работает с таблицами:

Код: plaintext
1.
2.
3.
4.
    .foreach_item(Table.Columns," (",")\n")
        .if (%Computed% == false) && (%Code% != "Code") && (%Code% != "ID")
%Code%
        .endif
    .next(",")
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37149984
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может лучше сгенерить код триггера?
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37150249
Alkatraz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роман Дынник, в смысле?

Вот код триггера на таблицу. Надо тоже самое, но на представление.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create trigger [%QUALIFIER%]%TRIGGER% on [%QUALIFIER%]%TABLE% Instead Of Insert as
begin
   SET NOCOUNT ON;

Insert Into 
    .if(%Owner%)
[%QUALIFIER%]%Table.GeneratedName%
    .else
%Table.GeneratedName%
    .endif()
    .foreach_item(Table.Columns," (",")\n")
        .if (%Computed% == false) && (%Code% != "Code") && (%Code% != "ID")
%Code%
        .endif
    .next(",")
Select 
    .foreach_item(Table.Columns,"","\n")
        .if (%Computed% == false) && (%Code% != "Code") && (%Code% != "ID")
[List].[%Code%]
        .endif
    .next(",")
From [Inserted] [List]
end
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37151592
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле через vbs, а не с помощью темплейтов
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37151834
Alkatraz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роман Дынник, я прошу прощения, но не могли бы вы привести пример скрипта? Я с vbs не дружу абсолютно.
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37152204
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так (для выделенной вью)
Код: plaintext
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.
dim vw, body, tr, cols, tb

set vw = ActiveSelection.Item( 0 )
set tb = vw.Tables.Item( 0 )

set tr = vw.Triggers.CreateNew()
tr.Code = "trInsteadOfInsert" + vw.Code
tr.Name = tr.Code
body = "create trigger %TRIGGER% on %TABLE% instead of insert as" + vbCrLf
body = body + "begin" + vbCrLf
body = body + "SET NOCOUNT ON" + vbCrLf
body = body + "INSERT INTO " + tb.Code + vbCrLf

for each c in tb.Columns
   tbCols = tbCols + c.Code + "," + vbCrLf
next
tbCols = mid(tbCols, 1 ,len(tbCols)- 3 )

for each c in vw.Columns
   vCols = vCols + c.Code + "," + vbCrLf
next
vCols = mid(vCols, 1 ,len(vCols)- 3 )

body = body + "(" + tbCols + ")" + vbCrLf
body = body + "SELECT " + vCols + vbCrLf
body = body + "FROM INSERTED" + vbCrLf
body = body + "end" + vbCrLf


tr.Text = body

output body
...
Рейтинг: 0 / 0
PowerDesigner - перебрать колонки представления (View)
    #37152274
Alkatraz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роман Дынник, спасибо огромное.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner - перебрать колонки представления (View)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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