Search code examples
mysqlforeign-keys

Im getting an error code 1822 when i making the TAG table


create database priceTag;
use priceTag;

CREATE TABLE `ProductNumber` (
  `Sku` INT auto_increment not null,
  `Model` VARCHAR(100),
  PRIMARY KEY (`Sku`)
);

ALTER TABLE ProductNumber AUTO_INCREMENT=60000;


CREATE TABLE `Manufacture` (
  `Manufacture` VARCHAR(100),
  `Model` VARCHAR(100),
  `Category` VARCHAR(100),
  PRIMARY KEY (`Model`)
);

CREATE TABLE `OpenBox` (
  `Condtion` VARCHAR(100),
  `LP` INT auto_increment not null,
  `MissingItems` VARCHAR(100),
  `Model_` VARCHAR(100),
  FOREIGN KEY (`Model_`) REFERENCES `Manufacture`(`Model`),
  PRIMARY KEY (`LP`)
);

ALTER TABLE OpenBox AUTO_INCREMENT=200000000;

CREATE TABLE `TAG` (
  `SKU*` INT,
  `Model*` VARCHAR(100),
  `PRICE*` DECIMAL(10,2),
  `LP*` INT,
  `condtion*` VARCHAR(100), 
  FOREIGN KEY (`SKU*`) REFERENCES `ProductNumber`(`Sku`),
  FOREIGN KEY (`Model*`) REFERENCES `Manufacture`(`Model`),
  FOREIGN KEY (`LP*`) REFERENCES `OpenBox`(`LP`),
  FOREIGN KEY (`condtion*`) REFERENCES `OpenBox`(`condtion`)
);

CREATE TABLE `Inventory` (
  `INV` int,
  `Sku!` int,
  `Model!` VARCHAR(100),
  FOREIGN KEY (`Sku!`) REFERENCES `ProductNumber`(`Sku`),
  FOREIGN KEY (`Model!`) REFERENCES `Manufacture`(`Model`)
);

Solution

  • The column which you refer on in FOREIGN KEY (`condtion*`) REFERENCES `OpenBox`(`condtion`) (i.e. OpenBox.condtion) is not indexed.

    Add needed unique index creation then create TAG table.

    DEMO