CREATE TABLE `city` (
  `ID` bigint(22) DEFAULT NULL,
  `CITYID` bigint(22) NOT NULL DEFAULT '0',
  `CITYNAME` varchar(50) DEFAULT NULL,
  `FATHERID` bigint(22) DEFAULT NULL,
  UNIQUE KEY `PK_CITY` (`CITYID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `area`;
CREATE TABLE `area` (
  `ID` bigint(22) DEFAULT NULL,
  `AREAID` bigint(22) NOT NULL DEFAULT '0',
  `AREANAME` varchar(50) DEFAULT NULL,
  `FATHERID` bigint(22) DEFAULT NULL,
  UNIQUE KEY `PK_AREA` (`AREAID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;alter table AREA
   add constraint FK_AREA_CITY foreign key (FATHERID)
      references CITY (CITYID)
      not deferrable;
请教大神这样添加外键是哪里错了?

解决方案 »

  1.   

    错误提示如下:
    [SQL] 
    alter table AREA
       add constraint FK_AREA_CITY foreign key (`FATHERID`)
          references `CITY`(`CITYID`)
          not deferrable;
    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'not deferrable' at line 4
      

  2.   


    我是在mysql数据库执行的
      

  3.   

    楼主你好,deferrable属性的格式如下:
    [ [not] deferrable [initially {immediate | deferred} ] ] initially immediate(初始化立即执行) initially deferred(初始化延迟执行)你可以把最后一句改成:
    not deferrable  initially immediate或者not deferrable initially deferred
      

  4.   


    我知道什么原因了,我是由oracle数据库转为mysql数据库,mysql外键约束中没有这个约束项,不知道mysql的哪个约束条件等于oracle的这个约束条件