【问题标题】:Writing data to tables with relationship in SQL Server在 SQL Server 中将数据写入具有关系的表
【发布时间】:2020-06-05 13:46:44
【问题描述】:

我有两个不同的表,其中包含多个列。像下面这样

表1

ID  CUSTOMER  PRODUCT DETAILS
21    joe         phone
22    doe         shoe
23    john        cup       

表2

PRODUCT ID   COST    ID
   1         9000    21
   2          600    22  
   3          30     23
table1 中的

ID 为主索引,table2 中的PRODUCT ID 为主索引。这两个表之间的共同链接是 ID。我使用以下查询来读取值。

String query = "SELECT * FROM Table1 c1 INNER JOIN Table2 c2 ON c1.ID = c2.ID";

但我的问题是当我添加新行时,我使用以下查询。

String query1 = "INSERT INTO Table1(CUSTOMER) VALUES ('" + alex + "') ";
String query2 = "INSERT INTO Table2(COST) VALUES ('" + 500 + "') ";

由于 ID 不是 Table2 的主索引,我在 ID 中得到一个 NULL 值。当我再次尝试读取时,由于 ID 不匹配,我无法重新加载保存的数据。

编辑

这是我根据here给出的解释尝试过的,

String foreignKey = "ALTER TABLE Table2 ADD FOREIGN KEY (ID) REFERENCES Table1(ID)";

table2 中的列 ID 仍然为空。我是否需要以某种方式组合查询来获得结果?因为我只是按如下方式一一执行查询。

Statement stmt = connect.createStatement();
stmt.executeUpdate(query1);
stmt.executeUpdate(query2);
stmt.executeUpdate(foreignKey);

【问题讨论】:

  • 请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。

标签: java android sql-server


【解决方案1】:

这里的总体思路 - 您需要从第一个“插入”到 Table1 中获取自动生成的 id,并在第二个“插入”中使用此 id 在 Table2 中显式设置“ID”。例如,您可以看到如何做到这一点here

第二个表中的外键 - 只是一个约束,有助于防止数据不一致。它的主要目的是在您尝试使用主表中不存在的外键放置一些数据时向您提供一些信息。当您删除 Table1 中的行时,它还可以帮助(如果您在创建外键时设置此选项)从 Table2 中删除与 Table1 链接的外键上的行。

而且你不应该在每次向 Table1、Table2 插入数据时调用stmt.executeUpdate(foreignKey);。当你描述你的数据库的结构时应该做一次。

【讨论】:

  • 由于我是访问 sql server 的新手,而且我正在处理已经存在的带有表的数据库,这让我感到困惑。谢谢你的建议。我会调查的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2021-03-02
相关资源
最近更新 更多