Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
jvx:server:storage:insteadof [2018/02/07 08:15]
admin
jvx:server:storage:insteadof [2020/06/29 13:12] (current)
cduncan Edited for English grammar (capitalization, punctuation, correct verb conjugation)
Line 2: Line 2:
 ~~Title: InsteadOf Trigger~~ ~~Title: InsteadOf Trigger~~
  
-If you're an Oracle user, you'll know that it's possible to update views with insteadOf triggers. An insteadOf trigger will do the CRUD operation(s) and it will be called with new/changed values like any other trigger. It's like a procedure ​which does CRUD programmatically. It's a simple concept but not available in all databases.+If you're an Oracle user, you'll know that it's possible to update views with insteadOf triggers. An insteadOf trigger will do the CRUD operation(s)and it will be called with new/changed values like any other trigger. It's like a procedure ​that does CRUD programatically. It's a simple concept but not available in all databases.
  
-With JVx' DBStorage it's super easy to use insteadOf triggers in your business logic independent of the database.+With JVx' DBStorageit's super easy to use insteadOf triggers in your business logic independent of the database.
  
-We have a short example for you. Imagine you have an Activity ​table with columns: name, cost, valid_from, valid_to, ​... The table also has a foreign key to a contract. One contract has one or more activities:+We have a short example for you. Imagine you have an activity ​table with columns: name, cost, valid_from, valid_to, ​etc. The table also has a foreign key to a contract. One contract has one or more activities:
  
 {{:​jvx:​server:​storage:​contract_activity_io.png?​nolink|}} {{:​jvx:​server:​storage:​contract_activity_io.png?​nolink|}}
  
-Our GUI shows a list of all available activities and it should be possible to change the contract. If the contract is available, this would be a straight forward ​implementation because JVx supports everything out-of-the-box. But we want to insert a new contract if it isn't available. Without ​additional popups, ...+Our GUI shows a list of all available activities and it should be possible to change the contract. If the contract is available, this would be a straightforward ​implementation because JVx supports everything out of the box. However, ​we want to insert a new contract if it isn't available ​without ​additional popups.
  
 {{:​jvx:​server:​storage:​insteadofgui.png?​nolink|}} {{:​jvx:​server:​storage:​insteadofgui.png?​nolink|}}
Line 16: Line 16:
 We'll use an insteadOf trigger to solve this problem. We'll use an insteadOf trigger to solve this problem.
  
-In above screenshot, the "New contract"​ wasn't available in the Contract ​table, but we did the insert during inserting a new Activity. Here's the whole code:+In the above screenshot, the "New contract"​ wasn't available in the contract ​table, but we did the insert during inserting a new activity. Here's the whole code:
  
 <file java TestInsteadOf.java>​ <file java TestInsteadOf.java>​
Line 230: Line 230:
 </​file>​ </​file>​
  
-The first method allows inserting new contractsbecause the cell editor won't check for existing contracts. The second method implements the insteadOf trigger.+The first method allows inserting new contracts because the cell editor won't check for existing contracts. The second method implements the insteadOf trigger.
  
 The trigger itself checks if the contract ID is empty and creates a new contract in this case. The activity will be inserted with the new contract id. The eventInsteadOfUpdate is missing in our example, but it works the same way. The trigger itself checks if the contract ID is empty and creates a new contract in this case. The activity will be inserted with the new contract id. The eventInsteadOfUpdate is missing in our example, but it works the same way.
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information