Pages

Sunday, 18 January 2015

Deferred constraint in Oracle


Deferred Constraint

- A deferred constraint is one that is enforced when a transaction is committed.
- To make a constraint deferred we need to declare it as deferrable. A deferrable constraint is specified by using DEFERRABLE clause.
- Once you've added a constraint, you cannot change it to DEFERRABLE. You must drop and recreate the constraint.
- When you add a DEFERRABLE constraint, you can mark it as INITIALLY IMMEDIATE or INITIALLY DEFERRED.
- INITIALLY IMMEDIATE means that the constraint is checked whenever you add, update, or delete rows from a table.
- INITIALLY DEFERRED means that the constraint is only checked when a transaction is committed.

A. DEFERRED Example

SQL>CREATE TABLE a1(
 id INT CONSTRAINT cns_a1_id_chk check(id>5) DEFERRABLE,
 name VARCHAR2(35)
);

SQL>INSERT INTO a1 values(6, 'a');            //valid
SQL>INSERT INTO a1 values(1, 'a');            //invalid

SQL>commit;

SQL>SELECT * FROM a1;
ID                    NAME
6                      a

SQL>SET CONSTRAINT cns_a1_id_chk  DEFERRED;

SQL>INSERT INTO a1 values(7, 'a');            //valid
SQL>INSERT INTO a1 values(2, 'a');            //valid (although it is violating the constraint,
                                                            because the constraint is defined as INITIALLY  
                                                            DEFERRABLE which is nothing but same as
                                                            DEFERRED)
SQL>SELECT * FROM a1;
ID                    NAME
6                      a
7                      a
1                      a

SQL>commit;

Note: when commit query will execute it will check all the temporary inserted data is valid or not and if it will found any record as invalid one then it will rollback all (till last commit).

So as in our above example we had inserted two records i.e.

SQL>INSERT INTO a1 values(7, 'a');            //valid
SQL>INSERT INTO a1 values(1, 'a');            //invalid
As 2nd record contains invalid data so it will rollback both the records. As a result of this now there is only one record is found in the table;

SQL>SELECT * FROM a1;
ID                    NAME
6                      a

B. INITIALLY DEFERRED Example

SQL>CREATE TABLE a2(
 id INT CONSTRAINT cns_a2_id_chk check(id>5) DEFERRABLE INITIALLY DEFERRED,
 name VARCHAR2(35)
);

SQL>INSERT INTO a2 values(6, 'a');            //valid

SQL>commit;

SQL>SELECT * FROM a2;
ID                    NAME
6                      a

SQL>INSERT INTO a2 values(7, 'a');            //valid
SQL>INSERT INTO a2 values(2, 'a');            //valid (although it is violating the constraint,
                                                            because the constraint is defined as INITIALLY  
                                                            DEFERRABLE which is nothing but same as
                                                            DEFERRED)
SQL>SELECT * FROM a2;
ID                    NAME
6                      a
7                      a
1                      a

SQL>commit;

Note: when commit query will execute it will check all the temporary inserted data is valid or not and if it will found any record as invalid one then it will rollback all (till last commit).

So as in our above example we had inserted two records i.e.

SQL>INSERT INTO a2 values(7, 'a');            //valid
SQL>INSERT INTO a2 values(1, 'a');            //invalid
As 2nd record contains invalid data so it will rollback both the records. As a result of this now there is only one record is found in the table;

SQL>SELECT * FROM a2;
ID                    NAME
6                      a

C. INITIALLY IMMEDIATE Example

SQL>CREATE TABLE a3(
 id INT CONSTRAINT cns_a3_id_chk check(id>5) DEFERRABLE INITIALLY IMMEDIATE,
 name VARCHAR2(35)
);

SQL>INSERT INTO a3 values(6, 'a');            //valid
SQL>INSERT INTO a3 values(1, 'a');            //invalid

SQL>commit;

SQL>SELECT * FROM a3;
ID                    NAME
6                      a

SQL>SET CONSTRAINT cns_a3_id_chk  DEFERRED;

SQL>INSERT INTO a3 values(7, 'a');            //valid
SQL>INSERT INTO a3 values(2, 'a');            //valid (although it is violating the constraint,
                                                            because the constraint is defined as INITIALLY  
                                                            DEFERRABLE which is nothing but same as
                                                            DEFERRED)
SQL>SELECT * FROM a3;
ID                    NAME
6                      a
7                      a
1                      a
SQL>commit;

Note: when commit query will execute it will check all the temporary inserted data is valid or not and if it will found any record as invalid one then it will rollback all (till last commit).

So as in our above example we had inserted two records i.e.

SQL>INSERT INTO a3 values(7, 'a');            //valid
SQL>INSERT INTO a3 values(1, 'a');            //invalid

As 2nd record contains invalid data so it will rollback both the records. As a result of this now there is only one record is found in the table;

SQL>SELECT * FROM a3;
ID                    NAME
6                      a

Note: For more information on Oracle database constraints please refer Oracle Database SQL Reference guide

Friday, 16 January 2015

How to know JDK bit size of your system

How to know your how much bit of JDK is installed on your system
Sometimes we have a requirement to know how many bit of JDK is being installed in our system. In "System" class of java.lang package contains getProperty(-) method, which will return system information (based on input parameters i.e. key). Click here to get more information

To know  how many bit of JDK is being installed in our system it please run the following java program:

public class JdkBitVersion {

            public static void main(String args[]) {
                        System.out.println("My JDK is : " + System.getProperty("sun.arch.data.model") + "bit");
            }
}

Output

Below is the list of system properties includes values for the following keys:
Key
Description of Associated Value
java.version
Java Runtime Environment version
java.vendor
Java Runtime Environment vendor
java.vendor.url
Java vendor URL
java.home
Java installation directory
java.vm.specification.version
Java Virtual Machine specification version
java.vm.specification.vendor
Java Virtual Machine specification vendor
java.vm.specification.name
Java Virtual Machine specification name
java.vm.version
Java Virtual Machine implementation version
java.vm.vendor
Java Virtual Machine implementation vendor
java.vm.name
Java Virtual Machine implementation name
java.specification.version
Java Runtime Environment specification version
java.specification.vendor
Java Runtime Environment specification vendor
java.specification.name
Java Runtime Environment specification name
java.class.version
Java class format version number
java.class.path
Java class path
java.library.path
List of paths to search when loading libraries
java.io.tmpdir
Default temp file path
java.compiler
Name of JIT compiler to use
java.ext.dirs
Path of extension directory or directories
os.name
Operating system name
os.arch
Operating system architecture
os.version
Operating system version
file.separator
File separator ("/" on UNIX)
path.separator
Path separator (":" on UNIX)
line.separator
Line separator ("\n" on UNIX)
user.name
User's account name
user.home
User's home directory
user.dir
User's current working directory



Contact Us

Name

Email *

Message *