Решение довольно простое. К сожалению, не безупречный, потому что PowerDesigner не может выполнить обработчик событий в некоторых случаях (по неизвестной причине). Небольшой VBScript ниже должен быть в состоянии справиться с этим. Файл расширенного определения модели должен быть создан и присоединен к проекту. Этот сценарий является обработчиком события Validate для метакласса Table (хотя это скорее автофикс, чем проверка).
Function %Validate%(obj, ByRef message)
' Implement your object validation rule on <parent> here
' and return True in case of success, False otherwise with a message
dim col
for each col in obj.columns
if col.Primary = true then
if left(col.name,3) <> "id_" then
With col
.name = "id_" & .name
.SetNameAndCode .Name, "", True
End With
end if
else
if left(col.name,3) = "id_" then
with col
.name = right(.name, len(.name)-3)
.SetNameAndCode .Name, "", True
end with
end if
end if
next
%Validate% = True
End Function
Благодарность принадлежит Ричарду Кьеру, который предоставил исходный код. Спасибо, Ричард.