繁体   English   中英

外键和更新记录

[英]Foreign key and update records

我创建了三个表:产品,商品和类别。我加入了外键表:

CREATE TABLE `products` (
  `id` int(11) AUTO_INCREMENT PRIMARY KEY,
  `added` varchar(30) NOT NULL,
  `nazwa` int(11) NOT NULL,
  `kategoria` int(11) DEFAULT NULL,
  `sn` varchar(100) NOT NULL,
  `quantity` int(10) NOT NULL,
  `data` date NOT NULL,
  `godzina` time NOT NULL,
  `warranty` date NOT NULL,
  FOREIGN KEY (`nazwa`) REFERENCES `article`(`article_id`),
  FOREIGN KEY (`kategoria`) REFERENCES `category` (`category_id`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

一切正常。 问题是当我尝试更新表产品中的记录时。

我尝试这样:

    UPDATE `products` 
SET 
    `added` = 'michal',
    `nazwa` = 'ball',
    `kategoria` = 'toys',
    `sn` = '14dsa564dsa65',
    `data` = NOW(),
    `godzina` = CURTIME()

WHERE
    `id` = 13    

但是此查询不起作用。

错误代码:1452不能添加或更新子行,外键约束失败( testproducts ,约束products_ibfk_1外键( nazwa )参考articlearticle_id ))0.157秒

看一下我何时不会从使用此查询的数据库返回记录:

SELECT 
    products.id,
    products.added,
    article.nazwa,
    category.kategoria,
    products.sn,
    products.quantity,
    products.data,
    products.godzina,
    products.warranty
FROM
    products
        LEFT JOIN
    category ON products.kategoria = category.category_id
        LEFT JOIN
    article ON products.nazwa = article.article_id
ORDER BY id

对于更新,我使用了:

UPDATE `products` 
SET 
    products.added= 'michal',
    article.nazwa= 'ball',
    category.kategoria = 'toys',
    products.sn= '14dsa564dsa65',
    products.data = NOW(),
    products.godzina = CURTIME(),

LEFT JOIN
    category ON products.kategoria = category.category_id
        LEFT JOIN
    article ON products.nazwa = article.article_id
WHERE
    `id` = 13    

但抛出错误:

错误代码:1064。 检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在行10 0.000秒处的“ LEFT JOIN category ON products”附近使用。kategoria= category.category_id LEFT

你的问题是, article表不包含的行用

article_id ='piłeczka pingpongowa'

并且由于此列定义为INT(11),因此无论如何也不会进入此列。

而且您的category表不包含带有

category.category_id = 'zabawki2'

在您的模式中,该列也定义为INT(11)! 所以这也行不通

在创建父级之前,您不能创建子级!

同时删除两个不需要的JOIN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM