当前位置: 首页 > 知识库问答 >
问题:

MySQL#1215问题

江亮
2023-03-14

这是我试图制作的表格:

创建表Customer(customer_reference int UNIQUE AUTO_INCREMENT,主键(customer_reference),名字VARCHAR(20),姓氏VARCHAR(20),联系人VARCHAR(15),电子邮件VARCHAR(50),建筑物VARCHAR(5),道路VARCHAR(40),城市VARCHAR(30),邮政编码VARCHAR(7),县VARCHAR(30));

创建表发票(invoice_reference int UNIQUE AUTO_INCREMENT,customer_reference int UNIQUE,主键(invoice_reference)、外键(customer_reference)引用客户(customer_reference)、invoice_cost DECIMAL(20,2)、payed bit、order_date日期时间、delivery_date日期);

创建表Stock(container VARCHAR(10)UNIQUE NOT NULL DEFAULT 0,primary key(container),SBADNLon INT(4),SBADNFel INT(4),SBADNSou INT(4),CHECK(container=(“sbadn-lon”>0,“sbadn-fel”>0,“sbadn-sou”>0));/*这只是显示了3个可能的容器变化,每个属性存储一个包含库存中可用模型数量的值*/

创建TABLE items_purched(container_ordered VARCHAR(10)NOT NULL,invoice_reference int,容器VARCHAR(10)不为空默认“无”,container_cost decimal(20,2)NULL,container_size VARCHAR(6)NULL,color VARCHAR(5)NULL,grade CHAR(1)NULL,depot VARCHAR(15)NULL,container_type VARCHAR(20)NULL,conditionn VARCHAR(4)NULL,主键(container_ordered,container_size,color,grade,depot,container_type,conditionn),外键(invoice_reference)引用发票(invoice_reference),外键(container)引用Stock(container),外键(container_size)引用container_size(外键(depot)引用depot(depot),外键(container_type)引用container_type(container_type),外键(conditionn)引用conditionn(conditionn));

创建表Depot(Depot VARCHAR(15)NOT NULL,container_ordered VARCHAR(10)NOT NULL,主键(Depot),外键(container_ordered)引用items_pureded(container_ordered),CHECK(Depot=(“London”,“FelixStowe”,“Southampton”));

创建表Container_Type(Container_Type VARCHAR(20)不为NULL,CONTAINER_ORDERD VARCHAR(10)不为NULL,主键(Container_Type)、外键(CONTAINER_ORDERD)引用ITEMS_PURRED(CONTAINER_ORDERD),CHECK(Container_Type=(“干燥”、“Inslated”、“refreigerated”、“Open Top”、“Tunnel”));

创建表Container_Size(Container_Size VARCHAR(6)不为NULL,CONTAINER_ORDERD VARCHAR(10)不为NULL,主键(Container_Size)、外键(CONTAINER_ORDERER)引用ITEMS_PURRED(CONTAINER_ORDERER),检查(Container_Size=(“小型”、“中型”、“大型”));

创建表颜色(颜色VARCHAR(5)不为空,container_ordered VARCHAR(10)不为空,主键(颜色),外键(container_ordered)引用items_purched(container_ordered),CHECK(颜色=(“黑色”,“绿色”));

创建表条件n(Conditionn VARCHAR(4)不为NULL,CONTAINER_ORDERD VARCHAR(10)不为NULL,主键(Conditionn)、外键(CONTAINER_ORDERD)引用items_purved(CONTAINER_ORDERD),检查(Conditionn=(“新建”,“已使用”));

创建表等级(等级CHAR(1)不为空,container_ordered VARCHAR(10)不为空,主键(等级),外键(container_ordered)引用items_purched(container_ordered),CHECK(等级=(“A”,“B”,“C”));

提前致谢

共有1个答案

余弘新
2023-03-14

首先,我相信最好为您的表使用另一个主键。

所有外键约束的数据类型应该与原始表中将字段定义为主键的方式完全相同。例如,如果container是Stock表中的varchar(20),那么它必须是items_purched表中的varchar(20)。

此外,定义的排序规则(如果有的话)也是相同的,就像这些列的utf-8一样。请注意,您的表可能在相同的collaction中,但列可能不同,请正确检查。

 类似资料:
  • 11:15:57创建表如果不存在tblcompany(companyid INT(11)无符号NOT NULL,custfirst VARCHAR(50),custlast VARCHAR(50),company VARCHAR(50),custphone VARCHAR(50), custemail VARCHAR(50),主键(companyid),索引(companyid),约束外键(com

  • 问题内容: 我正在尝试将新模式转发工程到我的数据库服务器上,但是我不知道为什么会收到此错误。我试图在这里搜索答案,但是我发现的所有内容都说是将db引擎设置为Innodb或确保要用作外键的键是它们自己表中的主键。如果我没记错的话,我都做过这两件事。你们还有其他帮助吗? SQL脚本执行完成:语句:成功7次​​,失败1次 这是父表的SQL。 问题答案: 我猜,和/或不完全相同的数据类型和。 也许父表中的

  • 引用的表是“组”(InnoDB)。 它有一个“id”列,定义为INT(11),不可为空,自动递增,主键 引用表为“用户(InnoDB)” 它的group_id列定义为INT(11),不可为空。 在引用表中已经存在一个基于“group_id”列的唯一索引 但是whn正在执行 我出错了 错误:1215无法添加外键约束 我添加db转储 检查清单 Db是InnoDB吗?是的 所有表都是InnoDB吗?是的

  • 问题内容: 我正在尝试为体育馆管理系统创建数据库,但无法弄清楚为什么会出现此错误。我试图在这里搜索答案,但找不到。 这是父表。 你们能帮我解决这个问题吗?谢谢。 问题答案: 为了将字段定义为,引用的父字段必须在其上定义了索引。 根据有关约束的文档: 参考parent_tbl_name(index_col_name,…) 定义上,和分别。并确保子列定义必须与其父列定义匹配。 更改表定义如下: 更改表

  • 问题内容: 我已经阅读了 Silberschatz的 数据库系统概念 ,第6版。我将在MySQL的OS X上实现第2章所示的大学数据库系统。但是我在创建表时遇到了麻烦。桌子看起来像 __ 创建表将导致以下错误。 在google搜索外键约束之后,我刚刚了解到“外键约束”一词表示来自表中外键列的数据必须存在于表的主键列中。但是我应该在插入数据时遇到此错误。 如果没有,为什么作者让我执行该SQL语句?

  • 关于这个错误,我到处都找过,也看过很多例子,但我还是想不出我的脚本有什么问题。如果这是一个常见的问题,我很抱歉,但到目前为止,搜索它对我没有帮助。剧本如下: 非常感谢你的帮助。