ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ Relationship Template Editor, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ Relationship Override, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² RI Type Override, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ). Π¨Π°Π±Π»ΠΎΠ½Ρ Relationship Override Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡ Π΅ΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΎΠΏΡΠΈΡ Relationship Override.
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ. ERwin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΡ Entity Override Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π¨Π°Π±Π»ΠΎΠ½Ρ Entity Override ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² RI Type Override ΠΈ Relationship Override, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡ Π΅ΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΎΠΏΡΠΈΡ Entity Override.
ERwin ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ.
ΠΠ»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Π²ΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΌΠ΅Π½Ρ ΠΏΡΠ½ΠΊΡ Trigger. ΠΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ Table Trigger Viewer, Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ -Table Trigger ΠΈ Trigger Template, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (ΡΠΈΡ. 2.78).
Π ΠΈΡ. 2.78. ΠΠΈΠ°Π»ΠΎΠ³ Table Trigger Viewer
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° CustomerName ΡΠ°Π±Π»ΠΈΡΡ CUSTOMER, ΡΠΈΡ. 2.79) Π² ΡΠ°Π±Π»ΠΈΡΠ΅ SECURITY ΡΠΎΠ·Π΄Π°Π²Π°Π»Π°ΡΡ ΡΡΡΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
Π ΠΈΡ. 2.79. Π’Π°Π±Π»ΠΈΡΡ CUSTOMER ΠΈ SECURITY
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Table Trigger Editor (Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Table Trigger Π΄ΠΈΠ°Π»ΠΎΠ³Π° Table Trigger Viewer) (ΡΠΈΡ. 2.80).
Π ΠΈΡ. 2.80. ΠΠΈΠ°Π»ΠΎΠ³ Table Trigger Editor
Π Π°ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ ΡΠΏΠΈΡΠΎΠΊ Table ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΡΠΈΠ³Π³Π΅Ρ. ΠΠ° ΡΠΈΡ. 2.80 ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ° CUSTOMER.
Π ΡΠΏΠΈΡΠΊΠ΅ Trigger ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΈΠΌΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° (SecurWrite). ΠΡΠ»ΠΈ ΠΈΠΌΡ Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, ERwin Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΡΠΈΠ³Π³Π΅ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ½ΠΎΠΏΠΊΠΈ New, Rename ΠΈ Delete ΡΠ»ΡΠΆΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π² ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.
ΠΡΡΠΏΠΏΠ° ΠΎΠΊΠΎΠ½ Π²ΡΠ±ΠΎΡΠ° Trigger On ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠΈΠΏ ΡΡΠΈΠ³Π³Π΅ΡΠ° - ΠΏΡΠΈ ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ ΡΡΠΈΠ³Π³Π΅Ρ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ - ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Delete, Π²ΡΡΠ°Π²ΠΊΠ΅ Insert ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Update-ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ ERwin Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ. ΠΠΏΡΠΈΠΈ Before ΠΈ After ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° - Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ SQL-ΠΊΠΎΠΌΠ°Π½Π΄ INSERT, UPDATE ΠΈΠ»ΠΈ DELETE. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π° ΡΠΈΡ. 2.80 ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΡΠΈΠ³Π³Π΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ UPDATE Π΄Π»Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ CustomerName ΡΠ°Π±Π»ΠΈΡΡ CUSTOMER.
ΠΠΏΡΠΈΠΈ Table ΠΈ Row (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ORACLE 7.x, SQLBase V6, Watcom V4 ΠΈ AS/400 V3) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠΈΠ³Π³Π΅Ρ. ΠΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ "FOR EACH TABLE" ΠΈΠ»ΠΈ "FOR EACH ROW".
Old - ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Ρ, New - ΡΡΡΠ»ΠΊΠ° Π½Π° Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΠ΅ΠΊΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡ %RefClause, ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΡΡΠΈΠ³Π³Π΅ΡΠ° ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ REFERENCES. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΈΠΌΡ "newl", Π΄Π»Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ - "oldl".
Π ΡΠΏΠΈΡΠΊΠ΅ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ (Parent), Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ (Child), ΠΈΠΌΡ ΡΠ²ΡΠ·ΠΈ (Verb Phrase) ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (Integrity Rule) Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠΈΠ³Π³Π΅Ρ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ.
Π ΠΎΠΊΠ½Π΅ Template Code ΠΌΠΎΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠ΄ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ°. ΠΠΎΠ΄ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΡΠΎΠ·Π΄Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ), ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:
create trigger %TriggerName
%Fire %Actions(" or")
on %TableName
%RefClause
%Scope
/* ERwin Builtin %Datetime */ /* default body for %TriggerName */ begin
Insert into Security (OldName.NewName, UserUpdate, UpdateDate) values (:old1.CustomerName,:new1,CustomerName, User, Sysdate);
end;
/
Π ΠΎΠΊΠ½Π΅ Expanded Code ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ ΡΡΠΈΠ³Π³Π΅ΡΠ° (Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ - Oracle 7.2), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ:
create trigger SecurWrite BEFORE UPDATE OF
CustomerName
on CUSTOMER
REFERENCING OLD AS old1 NEW AS new1
for each row
/* ERwin Builtin Tue Jan 26 21:24:371999 7
/* default body for SecurWrite 7
begin
Insert into Security (OldName.NewName, UserUpdate, UpdateDate)
values (:old1.CustomerName,:new1.CustomerName, User, Sysdate);
end;
/
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ΅ΠΊΡΡ SQL-ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Oracle SQVPlus), ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ°.
SQL> insert into CUSTOMER (CustomerlD, CustomerName) values (20/lvanov');
1 row created.
SQL> update CUSTOMER set CuslomerName='Petrov' where CustomerlD=20;
1 row updated.
SQL> select* from SECURITY;
UPDATEDATE OLDNAME NEWNAME USERUPDATE
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
27-JAN-99 Ivanov Petrov SCOTT
ΠΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ CUSTOMER ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ SECURITY, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ²ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ½ΠΎΠΏΠΊΠ° Toolbox Π΄ΠΈΠ°Π»ΠΎΠ³Π° Table Trigger Editor Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ERwin Trigger Toolbox, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° (ΡΠΈΡ. 2.81).
Π ΠΈΡ. 2.81. ΠΠΈΠ°Π»ΠΎΠ³ ERwin Template Toolbox
Template Toolbox ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈ ΡΠ΅ΠΊΡΠΈΠΈ: ΡΠ»Π΅Π²Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ, ΡΠ²ΡΠ·Π΅ΠΉ, ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° %. Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠ»ΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΊΡΠΎΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΡΠΏΠΈΡΠΊΠ΅, Π² ΠΎΠΊΠ½Π΅ Description ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°. Π’Π°Π±Π»ΠΈΡΡ ΠΈ ΡΠ²ΡΠ·ΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, Π²Π·ΡΡΡ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎΡΡ Π² ΡΠ°ΠΉΠ»Π΅ MOVIES. ER1, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Models.
ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° Π² ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ Π»Π΅Π²ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠ΅ΠΉ ΠΌΡΡΠΈ ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠΎΠ². ΠΠ°ΠΊΡΠΎΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π² ΠΎΠΊΠ½Π΅ Template Code Π΄ΠΈΠ°Π»ΠΎΠ³Π° Table Trigger Editor.
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ) ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Trigger Template Editor (ΡΠΈΡ. 2.82).
Π ΠΈΡ. 2.82. ΠΠΈΠ°Π»ΠΎΠ³ Trigger Template Editor
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΡΡΠΈΠ³Π³Π΅ΡΠ° Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Detach ->, ΡΡΠΎΠ±Ρ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·Π°Π½ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠΌ. Π ΡΠΏΠΈΡΠΊΠ΅ Built-in Template ΠΈΠ»ΠΈ User Override Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²ΡΠ·Π°ΡΡ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠΌ. ΠΡΠ΄Π΅Π»ΠΈΠ² ΠΈΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Π°, Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Attach Π½Π°Π΄ ΡΠΏΠΈΡΠΊΠΎΠΌ. ERwin ΡΠ²ΡΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Ρ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡ Π² ΠΎΠΊΠ½Π΅ Template Code. ΠΠ»Ρ ΠΎΡΠΌΠ΅Π½Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ <- Rebind. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π°Π΄ΠΎ Π·Π°Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΈΠΌΡ Π² ΠΎΠΊΠ½Π΅ Template Name ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Trigger Toolbox (ΠΊΠ½ΠΎΠΏΠΊΠ° Trigger Toolboxβ) ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠΈΠ³Π³Π΅ΡΠ°. ΠΠ½ΠΎΠΏΠΊΠ° Add Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π² ΡΠΏΠΈΡΠΎΠΊ User Override.