【问题标题】:sql fiddle code for foreign key and primary key外键和主键的sql小提琴代码
【发布时间】:2016-09-25 04:42:22
【问题描述】:

我需要帮助来找出这两个表的代码。我正在使用 SQL 小提琴。

订单表

Donut Order ID (PK) INT (10)    
Customer ID(FK) INT (10)    
Order Date DATETIME (6)    
Special Notes VARCHAR (30)    

订单行项目表

Donut Order ID (PK)(FK) INT (10)    
Donut ID (PK)(FK) INT (10)    
Qty INT (10)    

我有我的客户表和我的甜甜圈表,但是当我尝试使用外键创建表时,我不断收到错误消息。任何帮助将不胜感激。

【问题讨论】:

  • 你能分享你的 sqlfiddle 链接吗?以及您遇到的错误。
  • CREATE TABLE OrderTable ( donutorderid varchar(10) NOT NULL, customerid varchar (10) NOT NULL, oderdate datetime (6) NOT NULL, PRIMARY KEY (donutorderid), FOREIGN KEY (customerid) 参考客户(客户ID) );无法添加外键约束
  • 您的客户表架构?还有您尝试插入的数据。此外,如果您要插入数据,请确保在插入 OrderTable 之前数据存在于客户表中
  • 抱歉,这里是链接sqlfiddle.com/#!9/79365,这是针对订单表的,当我使用外键命令构建架构时,它可以工作。我尝试过使用 Alter Table 命令和 Create table 语句中的外键命令。 ALTER TABLE OrderTable ADD INDEX 检查 (customerid), ADD CONSTRAINT 检查 FOREIGN KEY (customerid) REFERENCES Customer (customerid);
  • 请看下面的答案。

标签: mysql sql sqlfiddle


【解决方案1】:

我已经尝试过你的架构和那里的架构,它对我来说工作正常

尝试使用外键引用为 OrderTable 创建架构

 CREATE TABLE `OrderTable` (
  `donutorderid` varchar(10) NOT NULL,
  `customerid` varchar(10) NOT NULL,
  `oderdate` datetime(6) NOT NULL,
  PRIMARY KEY (`donutorderid`),
    CONSTRAINT `ordertable_ibfk_1` FOREIGN KEY (`customerid`) REFERENCES `Customer` (`customer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

所以你的 ALTER 命令中有一个小错误

在 Customer 表中,字段名称是 customer_id 而不是 customerid。

试试这个:-

ALTER TABLE OrderTable ADD INDEX checks (customerid), ADD CONSTRAINT checks FOREIGN KEY (customerid) REFERENCES Customer (customer_id); 

同样的 SQLfiddle:- http://sqlfiddle.com/#!9/0eb295

【讨论】:

  • 哦,哇,谢谢。有效。我现在应该能够弄清楚另一个。因此,您必须在语句末尾使用 customer_id。我真的很感激。
猜你喜欢
  • 2020-07-07
  • 1970-01-01
  • 2020-12-01
  • 2012-06-05
  • 2011-09-28
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
相关资源
最近更新 更多