【问题标题】:Update 2 tables using Stored Procedure in MySql使用 MySql 中的存储过程更新 2 个表
【发布时间】:2012-02-10 16:27:01
【问题描述】:

这似乎是一个简单的请求。但是我的查询不起作用,我在互联网上找到了相互矛盾的答案。是否可以使用存储过程连接 MySql 中的 2 个表来进行 UPDATE 和 INSERT?

我有一个 Asp.net Webforms 网站。它有 2 个表个人和地址。个人表包含个人的数据,即电话号码、传真、电子邮件等。 地址表包含个人的所有地址信息。他们每个表都有一个自动递增的个人 ID 列。 (注意:Address 表中的 individualID 不是主键,但 individual 表中的 individualID 是主键。

无论如何,我在 Asp.net 中有一个 FormView,它带有一个 SELECT 语句,可以连接这两个表并很好地显示数据。但是更新两个表的新信息总是失败。

我最近的错误是:键“PRIMARY”的重复条目“0”

有没有办法编写一个连接 2 个表的 UPDATE 语句?这一定存在吧?

【问题讨论】:

  • SQL 更新语句只能更新一张表。做两个,你更新一个表,然后另一个......希望在一个事务中,所以如果第二个失败,你可以回滚第一个。

标签: asp.net mysql stored-procedures insert-update


【解决方案1】:

可以使用单个查询更新多个表 -

UPDATE table1
INNER JOIN table2
  ON table1.id = table2.table1_id
SET table1.col1 = 'some value', table2.col1 = 'Another value'
WHERE <some where clause>;

【讨论】:

  • 明白我的意思吗?有人说不可能,其他人说是。
  • 当我添加 Set table1.col1 = 'somevalue' 我传递的变量名是某个值吗?比如Fname?还是 Lname?
  • :-) 这绝对是可能的。我什至在发布之前检查了它以确保。 'somevalue' 是您要分配给最有可能来自变量的列的值。
  • 好的,我正在尝试在 MySql WorkBench 中测试我的查询。我无法让它正确测试。我正在使用:调用 test_update(12, Starbucks, 123 My Street ) 其中 12 = param oindividualID, Starbucks = oCompany 和 123MyStreet = param oCompany。测试更新程序的正确 suntax 是什么。我正在使用 MySql 工作台。谢谢。
  • 为了给您任何进一步的帮助,您需要发布更多详细信息。表结构和存储过程的代码将是一个好的开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多