确定sqlconstraintviolationexception的原因

rta7y2nd  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(230)

我目前正在写一些代码来更新数据库中的值。我有一个带有三个约束的表:主键(复合)、外键(非复合)和唯一键(复合)。
我的表(的输出) 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

我有一个触发器(这个问题),它使itemattributeid自动递增,就好像它是一个myisam表一样,所以不应该违反主键
我的代码有可能引发sqlintegrityconstraintviolationexception。在过去,当我只有一个可能的约束冲突异常(外键)时,我假设sqlintegrityconstraintviolationexception来自该约束。但是在这个表中,我有两个可能被违反的约束(外键和唯一键),我怎么知道sqlintegrityconstraintviolationexception引用的是哪一个?我能得到约束类型吗?约束名称?字段名?我搜索了网络和javadoc,却找不到这个。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题