更新引用子表的键会产生约束错误,但不应该

时间:2015-08-28 21:04:45

标签: c# mysql foreign-keys constraints

我使用MySql,我有2个相关的表。 'artikel'子表包含3行,每行包含1,2和3的'idArtikel'。 'artikelen'父表有一行idArtikel = 2。 如果我将该行中的idArtikel更改为3(和Update()),我会收到错误,说明:

  

更新失败.exception无法删除或更新父行:a   外键约束失败(mydbartikel,CONSTRAINT   fk_artikel_artikelen FOREIGN KEY(idArtikel)参考   artikelenidArtikel)在更新时不执行任何操作的行动)

所有的钥匙都在那里,但我没有看到问题?!

这里有2个表创建SQL脚本:

CREATE TABLE IF NOT EXISTS `mydb`.`artikelen` (
  `idArtikelen` INT NOT NULL AUTO_INCREMENT,
  `idKlanten` INT NOT NULL,
  `idOmzetGroepen` INT NOT NULL,
  `idArtikel` INT NOT NULL,
  `Aantal` INT NULL,
  `Omschrijving` VARCHAR(45) NULL,
  `Datum` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
  `StuksPrijsEx` DECIMAL(10,2) NULL,
  `BtwPerc` INT NULL,
  `Gefactureerd` TINYINT(1) NULL,
  PRIMARY KEY (`idArtikelen`),
  INDEX `idKlanten.idx` (`idKlanten` ASC),
  INDEX `idArtikel.idx` (`idArtikel` ASC),
  INDEX `idOmzetGroepen.idx` (`idOmzetGroepen` ASC),
  INDEX `idArtikelen.idx` (`idArtikelen` ASC),
  CONSTRAINT `fk_artikelen_klanten1`
    FOREIGN KEY (`idKlanten`)
    REFERENCES `mydb`.`klanten` (`idKlanten`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `mydb`.`artikel` (
  `idArtikel` INT NOT NULL AUTO_INCREMENT,
  `Omschrijving` VARCHAR(35) NULL,
  `Merk` VARCHAR(20) NULL,
  `Type` VARCHAR(15) NULL,
  `StuksPrijsEx` DECIMAL(10,2) NULL,
  `idOmzetGroepen` INT NOT NULL,
  `BtwPerc` INT NULL DEFAULT 21,
  INDEX `idOmzetGroepen.idx` (`idOmzetGroepen` ASC),
  INDEX `idArtikel.idx` (`idArtikel` ASC),
  CONSTRAINT `fk_artikel_artikelen`
    FOREIGN KEY (`idArtikel`)
    REFERENCES `mydb`.`artikelen` (`idArtikel`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,

ENGINE = InnoDB

任何帮助,非常感谢! 提前感谢任何输入。 罗恩。

0 个答案:

没有答案