Once a schema has been created in the database, we can create and update Person
and Employee
instances.
Using the eyedboql monitor, we are going to perform the following operations:
create a person named "john wayne"
create a person named "mary poppins"
mary them
create 3 "john wayne" children named "baby1", "baby2" and "baby3"
Here is the way to perform the first three step:
% eyedboql -d foo -w
Welcome to eyedboql.
Type `\help' to display the command list.
Type `\copyright' to display the copyright.
? john := Person(firstname : "john", lastname : "wayne", age : 72);
= 2585.2.196439:oid
? mary := Person(firstname : "mary", lastname : "poppins", age : 68);
= 2587.2.702511:oid
? john.spouse := mary;
= 2587.2.702511:oid
Note the -w option on the eyedboql command line, specifying that you open the foo database in write mode.
A few comments:
? is the eyedboql prompt: of course, do not type this string!
:= is the assignment operator
each time you create an object, its identifier (oid) is displayed on your terminal
because of the relationship integrity constraint on the spouse
attribute, the operation john.spouse := mary is equivalent to mary.spouse := john
To create the three "john wayne" children:
?add Person(firstname : "baby1", age : 2) to john->children;
= 2589.2.36448:oid ?add Person(firstname : "baby2", age : 3) to john->children;
= 2595.2.683802:oid ?add Person(firstname : "baby3", age : 4) to john->children;
= 2597.2.134950:oid
At this stage, it is interesting to perform the following operation: in another terminal, launch another eyedboql command on the same database foo and query all persons, as follows:
% eyedboql -d foo -w -c "select Person;"
= bag()
It may seem surprising that no person instance is returned, but in fact it is not: each interaction with the database occurs within a transaction, and as long as this transaction has not been committed, the database is not modified by the operations that have been done since the beginning of the transaction. To perform effectively these operations, you must commit the transaction, by typing in the first eyedboql session:
? \commit
If you now query the person instances in your second eyedboql session, the five person instances will be returned:
? eyedboql -d foo -w -c "select Person;"
= bag(2597.2.134950:oid, 2595.2.683802:oid, 2589.2.36448:oid, 2587.2.702511:oid, 2585.2.196439:oid)
You can now quit the first eyedboql session with the following command:
? \quit