0

所以我在创建表格时遇到了一个小问题。问题在于我尝试为另一个表创建外键。我目前使用的是MYSQL2008 Management R2 express,所以没有设计师。这是我的两张桌子

use teckDB;

CREATE TABLE inventory
(
  primId int NOT NULL PRIMARY KEY,
  prodName VarChar(255),
  quantity int,
  prodCost MONEY,
  prodDesc VARCHAR(255)   
);

CREATE TABLE orderTB
(
 primId INT NOT NULL PRIMARY KEY,
 orderId INT NOT NULL,
 created date,
 prodId INT,
);

那两张桌子运行没有问题。但是,当创建第三个时会导致此错误消息。

消息 1769,级别 16,状态 1,第 3 行外键 'orderTB' 引用了引用表 'CustomerTB' 中的无效列 'orderTB'。消息 1750,级别 16,状态 0,第 3 行无法创建约束。请参阅以前的错误。

第三张桌子上......

CREATE TABLE CustomerTB
(
 primId INT NOT NULL  PRIMARY KEY,
 orderId INT, FOREIGN KEY (orderTB) REFERENCES orderTB(orderId),
 fName VARCHAR(50),
 lName VARCHAR(50),
 addLN1 VARCHAR(255),
 addLN2 VARCHAR(255),
 addCity VARCHAR(255),
 addPro VARCHAR(255),
 addPST VARCHAR(7)
 );
4

3 回答 3

0

尝试这个

FOREIGN KEY (iparent_id) REFERENCES innodb_parent (iparent_id)
于 2013-01-30T04:33:13.603 回答
0

我认为这应该有助于解决您的查询

http://blog.sqlauthority.com/2008/09/08/sql-server-%E2%80%93-2008-creating-primary-key-foreign-key-and-default-constraint/

于 2013-01-30T04:34:01.137 回答
0

在“orderId INT”之后有一个额外的逗号,并且外键语法错误。

这应该有效:

CREATE TABLE CustomerTB
(
  primId INT NOT NULL  PRIMARY KEY,
  orderId INT REFERENCES orderTB(orderId),
  fName VARCHAR(50),
  lName VARCHAR(50),
  addLN1 VARCHAR(255),
  addLN2 VARCHAR(255),
  addCity VARCHAR(255),
  addPro VARCHAR(255),
  addPST VARCHAR(7)
);

SQLFiddle 上测试这里

于 2014-06-17T12:05:19.597 回答