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

主键MySQL错误

寿翰飞
2023-03-14

null

null

create table stocks(
rawMatBatchID VARCHAR(4) NOT NULL,
finishedGoodsBatchID VARCHAR(4) NOT NULL,
rawMaterialID VARCHAR(4) NOT NULL,
finishedMaterialID VARCHAR(4) NOT NULL,
supplierID VARCHAR(5) NOT NULL,
rawMaterialType VARCHAR(10) NOT NULL,
finishedMaterialType VARCHAR(10) NOT NULL,
rawMatWeight VARCHAR(5) NOT NULL,
finishedGoodsWeightKg INT(5) NOT NULL,
finishedGoodsWeightG INT(5) NOT NULL,
finishedGoodsUnits INT(5) NOT NULL,
finishedGoodsDate VARCHAR(15) NOT NULL,
rawMatDate VARCHAR(15) NOT NULL,
PRIMARY KEY (finishedGoodsBatchID, rawMatBatchID),
CONSTRAINT FOREIGN KEY (finishedMaterialID) REFERENCES finishedMaterials(finishedMaterialID),
CONSTRAINT FOREIGN KEY (supplierID) REFERENCES supplierDetails(supplierID),
CONSTRAINT FOREIGN KEY (rawMaterialID) REFERENCES rawMaterials(rawMaterialID))ENGINE=INNODB;

null

create table transport(
transportID VARCHAR(4) NOT NULL,
vehicleID VARCHAR(4) NOT NULL,
finishedGoodsBatchID VARCHAR(4) NOT NULL,
finishedGoodsUnits INT(5) NOT NULL,
finishedGoodsWeightKg INT(5),
finishedGoodsWeightG INT(5),
transportDate VARCHAR(15),
CONSTRAINT PRIMARY KEY (transportID),
CONSTRAINT FOREIGN KEY (vehicleID) REFERENCES vehicles(vehicleID),
CONSTRAINT FOREIGN KEY (finishedGoodsBatchID) REFERENCES stocks(finishedGoodsBatchID)
)ENGINE=INNODB;

null

create table production(
productionBatchID VARCHAR(4) NOT NULL,
finishedMaterialID VARCHAR(4) NOT NULL,
rawMaterialID VARCHAR(4) NOT NULL,
productionDate VARCHAR(15),
rawMatBatchID VARCHAR(4),
initialWeight INT(5),
beforeWeight INT(5),
afterWeight INT(5),
finalWeight INT(5),
packingWeight INT(5),
noOfUnits INT(5),
wastage INT(5),
CONSTRAINT PRIMARY KEY (productionBatchID),
CONSTRAINT FOREIGN KEY (finishedMaterialID) REFERENCES finishedMaterials(finishedMaterialID),
CONSTRAINT FOREIGN KEY (rawMaterialID) REFERENCES rawMaterials(rawMaterialID),
CONSTRAINT FOREIGN KEY (rawMatBatchID) REFERENCES stocks(rawMatBatchID))ENGINE=INNODB;

null

共有2个答案

诸葛雨泽
2023-03-14

null

null

null

null

null

龙俊英
2023-03-14

null

null

null

null

CREATE TABLE transport(
    transportID VARCHAR(4) NOT NULL,
    vehicleID VARCHAR(4) NOT NULL,
    finishedGoodsBatchID VARCHAR(4) NOT NULL,
    rawMatBatchID VARCHAR(4) NOT NULL,                            -- added
    finishedGoodsUnits INT(5) NOT NULL,
    finishedGoodsWeightKg INT(5),
    finishedGoodsWeightG INT(5),
    transportDate VARCHAR(15),
    CONSTRAINT 
      PRIMARY KEY (transportID),
    CONSTRAINT 
      FOREIGN KEY (vehicleID) 
      REFERENCES vehicles(vehicleID),
    CONSTRAINT                                                    -- changed
      FOREIGN KEY (finishedGoodsBatchID, rawMatBatchID) 
      REFERENCES stocks (finishedGoodsBatchID, rawMatBatchID)
) ENGINE=INNODB;

null

 类似资料:
  • 主要内容:在创建表时设置主键约束,在修改表时添加主键约束,删除主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 主键分为单字段主键和多字段联合主键,本节将分别讲解这两种主键约束的创建、修改和删除。 使用主键应注意以下几点: 每个表只能定义一个主键。 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行

  • 我是SQL新手,正在尝试创建一个如下的模式。然而,我似乎不能正确获得成员表的外键。我试着在表创建后添加它,最初似乎工作正常,但现在当我试图添加一个测试数据行时,我得到了这个错误。 我敢肯定,这是我错过的非常愚蠢的事情,但如果有人能指出我做错了什么,那就太好了! 错误代码:1452。无法添加或更新子行:外键约束失败 (。,CONSTRAINTFOREIGN KEY()REFERENCES()) 无法

  • 主要内容:指定自增字段初始值,自增字段值不连续在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 通过给字段添加 AUTO_INCREMENT 属性来实现主键自增长。语法格式如下: 字段名 数据类型 AUTO_INCREMENT 默认情况下,AUTO_INCREMENT 的初始值是 1,每新增一条记录,字段值自动加 1。 一个表中只能

  • 问题内容: 某些SQL Server允许使用通用语句,例如。我认为这不适用于MySQL,是否有任何这样的解决方法可以跨多个表进行自动选择,还是需要使用查询查询来确定主键? 我一直在解决的方法是在运行查询之前调用。有更有效的方法吗?在选择过程中,MySQL可以确定表的主键吗? 更新: 正如Gordon所指出的那样,通常在MySQL或SQL中没有官方的方式来执行此操作。SAP具有自定义功能。有一些解决

  • 问题内容: 我将quartz.net版本从1.0.3升级到2.0.2。有一个用于数据库模式的迁移脚本,该脚本是为MSSQL编写的,并且我正在尝试为其编写MYSQL版本。 但是,我无法删除主键(需要这样做)。 MSSQL的原始脚本版本: 为了简单起见,我正在尝试第一个声明 这是我尝试过的结果: ALTER TABLE BLOB_TRIGGERS DROP PRIMARY KEY; [Err] 102

  • 我对SQL和MySQL非常陌生。我试图修改表中的主键列,使其自动递增。这个主键也是另一个表中的外键。由于与另一个表中的外键相关的错误,我无法修改此列。以下是错误: 我确信这很简单,但我不知道为什么,我关注的书也没有说明原因。谢谢。