-2

我是这个网站和数据库的新手。我正在为一家公司的销售点创建一个数据库。我有问题,因为我有这么多复合主键,所以这是我的问题......我有表成员:

DROP TABLE IF EXISTS member;
CREATE TABLE member (
    fName                   varchar(10)      NOT NULL,
    lname                   varchar(10)      NOT NULL,
    shippingAddress         varchar(50)      NOT NULL,
    billingAddress          varchar(50)      NOT NULL,
    memberNo                varchar(15)      NOT NULL,
    memStartDate            date             NOT NULL,
    memOf                   varchar(15)      ,
    PRIMARY KEY(memberNo, shippingAddress)
);
 and table shipping:

DROP TABLE IF EXISTS shipping;
CREATE TABLE shipping (
       company           varchar(10)    NOT NULL,
       warehouseAddress  varchar(50)    NOT NULL,
       memberAddress     varchar(50)    NOT NULL,
       memberNum         varchar(15)    NOT NULL,
       orderNumber       varchar(20)    NOT NULL,
       PRIMARY KEY(orderNumber)
);

ALTER TABLE shipping ADD CONSTRAINT shipping_memberAddnNUM_refs_member_memberNoNshippingAddress FOREIGN KEY (memberAddress, memberNum)
      REFERENCES member (shippingAddress, memberNo);

所以它给了我一个 errno: 150

我不一定需要 member(shippingAddress) 成为主键的一部分。但我确实需要参考我的运输表。有谁知道如何解决这个问题,我一直在网上查看示例,但似乎没有一个能解决它。

4

2 回答 2

0

您有两列以相反的顺序排列 - 从它们在 of 中的显示PRIMARY KEY方式来看member。尝试这个:

ALTER TABLE shipping 
  ADD CONSTRAINT shipping_memberAddnNUM_refs_member_memberNoNshippingAddress 
   FOREIGN KEY (memberNum, memberAddress)
     REFERENCES member (memberNo, shippingAddress);
于 2013-10-18T17:49:49.387 回答
0

我这样做:

CONSTRAINT      NAME_OF_PK      PRIMARY KEY(Field1, Field2)

但这是微软的 SQL 做事方式。

于 2013-10-18T17:46:58.330 回答