本帖最后由 llsy4275 于 2009-06-29 14:28:07 编辑

解决方案 »

  1.   

    外键一定要与主键对应,proID在province中是主键,所以成立,但在city中,只要主键的一部分,所以建立不了,应该ALTER TABLE county ADD CONSTRAINT FOREIGN KEY (cityId,proID) REFERENCES city(cityId,proID); 
      

  2.   

    这样写后仍然出现同样的错误:
    错误代码:1776,在被引用表city中没有与外键X的引用列的列表匹配的主键或候选键
      

  3.   

    city表中单独建立一个id作为主键,proid和cityid作为唯一约束,后面的表直接引用该主键。
      

  4.   

    create table province (
    proID varchar(2) PRIMARY KEY,
    proName varchar(50) not null
    );
    create table city (
    cityID varchar(2),
    proID varchar(2),
    cityName varchar(50),
    PRIMARY KEY(cityID,proID)
    );
    ALTER TABLE city ADD FOREIGN KEY (proID) REFERENCES province (proID);create table county (
    countyID varchar(2),
    cityID varchar(2) ,
    proID varchar(2) FOREIGN KEY(proID) REFERENCES province(proID),
    countyName varchar(50),
    PRIMARY KEY(countyID,cityID,proID)
    );
    ALTER TABLE county ADD CONSTRAINT [外键名称] FOREIGN KEY(cityId,proId) REFERENCES city(cityId,proID)
      

  5.   

    ALTER TABLE county ADD CONSTRAINT FOREIGN KEY (cityId,proID) REFERENCES city(cityId,proID); 
    这里的cityId与proID顺序不能乱,乱了就搞不定了
      

  6.   

    不想自定义外键名称就这样:
    ALTER TABLE county ADD FOREIGN KEY(cityId,proId) REFERENCES city(cityId,proID)