How add a unique key constraint to a column of a table in a database using JDBC API?



You can add a unique constraint to a column using the ALTER TABLE command

Syntax

ALTER TABLE table_name ADD CONSTRAINT MyUniqueConstraint UNIQUE(column1, column2...);

Assume we have a table named Dispatches in the database with 7 columns namely id, CustomerName, DispatchDate, DeliveryTime, Price and, Location with description as shown below:

+--------------+--------------+------+-----+---------+-------+ | Field        | Type         | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ | ProductName  | varchar(255) | YES  |     | NULL    | | | CustomerName | varchar(255) | No   |     | NULL | | | DispatchDate | date         | YES  |     | NULL | | | DeliveryTime | time         | YES  |     | NULL | | | Price        | int(11)      | YES  |   | NULL | | | Location     | text         | YES  | | NULL | | | ID           | int(11)      | NO   | PRI | NULL | | +--------------+--------------+------+-----+---------+-------+

Following JDBC program establishes connection with MySQL database, and adds a UNIQUE constraint to the column named CustomerName.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class UniqueKey_Constraint {    public static void main(String args[]) throws SQLException {       //Registering the Driver       DriverManager.registerDriver(new com.mysql.jdbc.Driver());       //Getting the connection       String mysqlUrl = "jdbc:mysql://localhost/mydatabase";       Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");       System.out.println("Connection established......");       //Creating the Statement       Statement stmt = con.createStatement();       //Query to alter the table       String query = "ALTER TABLE Sales ADD CONSTRAINT MyUniqueConstraint UNIQUE(ProductName)";       //Executing the query       stmt.executeUpdate(query); System.out.println("Constraint added......"); } }

Output

Connection established...... Constraint added......

Since we added UNIQUE constraint on the column named ProductName, if you get the description of the Sales table using the describe command you can observe that the Key value UNI added opposite to ProductName.

mysql> describe sales; +--------------+--------------+------+-----+---------+-------+ | Field        | Type         | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ | ProductName  | varchar(255) | YES  | UNI | NULL    | | | CustomerName | varchar(255) | NO   |     | NULL    | | | DispatchDate | date         | YES  |     | NULL    | | | DeliveryTime | time         | YES  |     | NULL    | | | Price        | int(11)      | YES  |     | NULL    | | | Location     | text         | YES  |     | NULL    | | | ID           | int(11)      | NO   | PRI | NULL   | | +--------------+--------------+------+-----+---------+-------+ 7 rows in set (0.00 sec)
Updated on: 2019-07-30T22:30:25+05:30

626 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements