我目前正在写一些代码来更新数据库中的值。我有一个带有三个约束的表:主键(复合)、外键(非复合)和唯一键(复合)。
我的表(的输出) 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,却找不到这个。
暂无答案!
目前还没有任何答案,快来回答吧!