I am using MySQL database.
I created database table called ACTIVITY_CATEGORY with columns: ID, ACTIVITY_CATEGORY_ID, NAME and with Unique key on NAME, ACTIVITY_CATEGORY_ID.
CREATE TABLE `activity_category` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`NAME` varchar(45) NOT NULL,
`ACTIVITY_CATEGORY_ID` bigint(20) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `NAME_ACTIVITY_CATEGORY_ID` (`NAME`,`ACTIVITY_CATEGORY_ID`),
KEY `FK_2l8tu9lwnmh0909gf96ccevwu` (`ACTIVITY_CATEGORY_ID`),
CONSTRAINT `FK_2l8tu9lwnmh0909gf96ccevwu` FOREIGN KEY (`ACTIVITY_CATEGORY_ID`) REFERENCES `ACTIVITY_CATEGORY` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8
When I execute following queries it behaves correctly and displays Duplicate entry error:
-- Executes OK
INSERT INTO `ACTIVITY_CATEGORY` (`NAME`, `ACTIVITY_CATEGORY_ID`)
VALUES ('Sport', '1');
-- Error Duplicate entry 'Sport-1' for key 'NAME_ACTIVITY_CATEGORY_ID
INSERT INTO `ACTIVITY_CATEGORY` (`NAME`, `ACTIVITY_CATEGORY_ID`)
VALUES ('Sport', '1');
When I execute following queries it behaves somehow wierd, because it does not display Duplicate entry error:
-- Executes OK
INSERT INTO `ACTIVITY_CATEGORY` (`NAME`, `ACTIVITY_CATEGORY_ID`)
VALUES ('Sport', NULL);
-- This should display error, but executes OK instead
INSERT INTO `ACTIVITY_CATEGORY` (`NAME`, `ACTIVITY_CATEGORY_ID`)
VALUES ('Sport', NULL);
How is it possible? It does not take the Unique key into consideration in case that I insert NULL value? Is there any way how to solve this?