【问题标题】:how to update null rows in join table如何更新连接表中的空行
【发布时间】:2016-05-30 22:31:27
【问题描述】:

我有 2 个表:带有字段(seller_id 名称)的卖家和带有字段(movie_id、名称、流派)的电影。它两个表具有“多对多”关系,所以我还有第三个连接表“sellers_movies”,字段为seller_id |电影 ID。它的字段在开始时具有空值。所以我的问题是:例如我们在“movies”表中添加movie_id,是否可以自动将“sellers_movies”表中的movie_id字段从null更新为我们在“movies”表中写入的内容?

【问题讨论】:

  • 你不能更新不存在的行..你必须为关系插入行
  • @scaisEdge 但是 LAST_INSERT_ID() 呢?没用?
  • 对我来说似乎与您的问题无关.. .. 存在的行之间存在很大差异,然后几乎有一个字段不同的形式为 null 和不存在的行。您的关系表卖方:movies 必须通过插入来填充 .. (如果单个关系发生变化,最终会更新),以便保持两个表之间的正确关系 .. last_insert_id .. 这意味着什么 .?.
  • @scaisEdge here dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html 我读到“如果你想使用为一个表生成的 ID 并将其插入到第二个表中,你可以使用这样的 SQL 语句:”所以如果我明白我必须填写这个连接表,是吗??但是您说:“如果单个关系发生变化,最终会更新”,我不明白,例如 Seller_id = 1 |电影 ID = 2 ,卖家 ID = 2 | movie_id = 3 ,我在 java swing 上开发它,例如我将 movie_id 从表单文本字段更改为 20 ,数据库如何检测到我更改了 movie_id = 3?
  • 您好,您的问题目前还不清楚。你说你想用插入的 ID 更新 sellers_movies 表。您只能更新(注意那个词)现有的行。假设您刚刚插入了电影表(1 - Matrix),因此,由于sellers_movies 表是一个关系表,多对多,我认为您的意思是在所有具有刚刚插入的 ID 的卖家之间创建一个关系,所以如果卖家有 1-Bla 和 2-Ble,你要 INSERT 1, 1 和 1, 2 不更新。我理解对了吗?如果是这样,请告诉我。我可以为你准备一个答案。

标签: mysql database swing sql-insert


【解决方案1】:

如果你的桌子上有一个triggermovies,你会很好。

CREATE TRIGGER associateMoviesToSellers
 BEFORE INSERT ON movies
 FOR EACH ROW
 BEGIN
    INSERT INTO sellers_movies (seller_id, movie_id)
       SELECT s.seller_id, NEW.movie_id 
         FROM sellers s;
 END;

然后对于movies 上插入的每一行,它将为sellers_movies 表上的每个卖家创建一个关联。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    相关资源
    最近更新 更多