ERwin создает RI-триггеры автоматически. Когда Вы строите свою модель данных, ERwin автоматически связывает шаблон RI-триггера, устанавливаемого по умолчанию, с каждой сущностью связи. На то, какой именно шаблон триггера будет присвоен связи и на генерируемый им код SQL влияют три критерия:
· Правило ссылочной целостности, которое он применяет к связи (RESTRICT, CASCADE, SET NULL, SET DEFAULT, NONE).
· Тип связи, с которым он связан (идентифицирующая или неидентифицирующая).
· Роль сущности в связи (родительская или дочерняя).
Правила ссылочной целостности
Когда триггер связывается с сущностью, он автоматически устанавливается так, чтобы усиливать одно из следующих правил ссылочной целостности, в зависимости от типа связи и роли сущности в этой связи.
| Правило ссылочной целостности | Что оно делает |
| RESTRICT | Запрещает СУБД производить требуемое изменение (INSERT, UPDATE или DELETE). |
| CASCADE | Производит требуемое изменение в первой таблице и распространяет его на связанные с ней таблицы. |
| SET NULL | Производит требуемое изменение в первой таблице и устанавливает нулевые (пустые) значения внешнего ключа в связанных с ней таблицах. |
| SET DEFAULT | Работает. как SET NULL, с той разницей, что вместо нулевого значения присваивает внешним ключам значение по умолчанию. |
| NONE | Ничего не делает (ERwin не усиливает ссылочную целостность). |
ERwin создает RI-тригеры автоматически, связывая шаблоны триггеров со всеми связями. Вы можете переопределить код SQL, генерируемый ERwin, адаптируя эти шаблоны для своей ситуации. См. в этой главе разд. 'Изменение режима RI-триггера для связи' и 'Переопределение RI-триггеров, устанавливаемых по умолчанию' об изменении поведения триггеров, устанавливаемых по умолчанию.
RI-триггеры и типы связей
Шаблоны RI-триггеров в ERwin связываются с сущностями, исходя из типа связи и роли сущности в этой связи. Тип связи и роль сущности определяют, какое правило ссылочной целостности будет, по умолчанию, усилено присвоенным шаблоном триггера. Тип связи может быть: идентифицирующая, неидентифицирующая (nulls allowed), неидентифицирующая (no nulls), связь подтипа.
| Роль сущности | Тип связи | |||
| Шаблон RI-триггера | Идентифици-рующая связь | Неидентифи-цирующая (nulls allowed) | Неидентифи-цирующая (no nulls) | Cвязь подтипа |
| Child Delete | None | None | None | None |
| Child Insert | Restrict | Set Null | Restrict | Restrict |
| Child Update | Restrict | Set Null | Restrict | Cascade |
| Parent Delete | Restrict | Set Null | Restrict | Cascade |
| Parent Insert | None | None | None | None |
| Parent Update | Restrict | Set Null | Restrict | Cascade |