确定SQLConstraintViolationException的原因

时间:2017-12-31 18:58:03

标签: java mysql sql jdbc constraints

我目前正在编写一些用于更新数据库中的值的代码。我有一个包含三个约束的表:主键(复合),外键(非复合)和唯一键(复合)。

我的表格(show create table ItemAttributeMaster的输出):

CREATE TABLE `ItemAttributeMaster` (
  `SKU` int(11) NOT NULL,
  `ItemAttributeID` int(11) NOT NULL,
  `Color` varchar(45) DEFAULT NULL,
  `Size` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`SKU`,`ItemAttributeID`),
  UNIQUE KEY `ItemAttribute_Unique` (`SKU`,`Color`,`Size`),
  CONSTRAINT `ItemAttribute_SKU` FOREIGN KEY (`SKU`) REFERENCES `ItemMaster` (`SKU`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1

我有一个触发器(this问题),它使ItemAttributeID自动增加,好像它是一个MyISAM表,因此主键不应该违反

我的代码有可能抛出SQLIntegrityConstraintViolationException。在那个过去,当我只有一个可能的约束违例异常(外键)时,我假设SQLIntegrityConstraintViolationException来自该约束。但是在这个表中,我有两个可能违反的约束(外键和唯一键),我怎么知道SQLIntegrityConstraintViolationException引用了哪些?我可以获得约束类型吗?约束名称?字段名称?我已经搜索过网络和JavaDoc,但找不到这个。

0 个答案:

没有答案