我采用的数据库是mysql的,大家先看一下内部表的结构,
CREATE TABLE BUSINESS_ENTITY
(
  BUSINESS_KEY VARCHAR(41) NOT NULL,
  AUTHORIZED_NAME VARCHAR(255) NOT NULL,
  PUBLISHER_ID VARCHAR(20) NULL,
  OPERATOR VARCHAR(255) NOT NULL,
  LAST_UPDATE TIMESTAMP NOT NULL,
  PRIMARY KEY (BUSINESS_KEY)
);CREATE TABLE BUSINESS_DESCR
(
  BUSINESS_KEY VARCHAR(41) NOT NULL,
  BUSINESS_DESCR_ID INT NOT NULL,
  LANG_CODE VARCHAR(5) NULL,
  DESCR VARCHAR(255) NOT NULL,
  PRIMARY KEY (BUSINESS_KEY,BUSINESS_DESCR_ID),
  FOREIGN KEY (BUSINESS_KEY)
    REFERENCES BUSINESS_ENTITY (BUSINESS_KEY)
);CREATE TABLE BUSINESS_CATEGORY
(
  BUSINESS_KEY VARCHAR(41) NOT NULL,
  CATEGORY_ID INT NOT NULL,
  TMODEL_KEY_REF VARCHAR(41) NULL,
  KEY_NAME VARCHAR(255) NULL,
  KEY_VALUE VARCHAR(255) NOT NULL,
  PRIMARY KEY (BUSINESS_KEY,CATEGORY_ID),
  FOREIGN KEY (BUSINESS_KEY)
    REFERENCES BUSINESS_ENTITY (BUSINESS_KEY)
);
上面的表中都有一个business_key字段,这个字段都是一样的,我现在要对这些表中的这个字段进行修改,我听说主键修改成功了,那么其他的外键的值也会跟着更新,但是我今天在business_entity表中进行对于主键的值进行更新的时候,发生了以下的错误信息。
mysql> update business_entity set business_key='3BC66810-B6A1-11DB-BE19-8FE9A30977AF' where business_key='8B29BD80-B6A1-11DB-BD80-F88467493279';
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`juddi1/business_descr`, CONSTRAINT `business_descr_ibfk_1` FOREIGN KEY (`BUSINESS_KEY`) REFERENCES `business_entity` (`BUSINESS_KEY`))
我不知道为什么会发生修改不成功,请达人能否指点一二,我在csdn里看到有些朋友是通过先在business_entity中增加一个新的,然后再把其他应用到这个business_key主键的表中的记录进行相应的修改,然后删除business_entity中原先的那个记录,但是我这里应用到这个business_key主键的表太多了,所以觉得采用那种方法不是很切合实际,我想处理这种问题的最好的方法是什么,望达人告知,谢谢。