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

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

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

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

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

Код: 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
05.03.2011, 22:33
    #37151592
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner - перебрать колонки представления (View)
в смысле через vbs, а не с помощью темплейтов
...
Рейтинг: 0 / 0
06.03.2011, 10:54
    #37151834
Alkatraz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner - перебрать колонки представления (View)
Роман Дынник, я прошу прощения, но не могли бы вы привести пример скрипта? Я с vbs не дружу абсолютно.
...
Рейтинг: 0 / 0
06.03.2011, 20:31
    #37152204
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner - перебрать колонки представления (View)
примерно так (для выделенной вью)
Код: 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
06.03.2011, 21:38
    #37152274
Alkatraz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PowerDesigner - перебрать колонки представления (View)
Роман Дынник, спасибо огромное.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / PowerDesigner - перебрать колонки представления (View) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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