【发布时间】:2016-03-31 15:10:53
【问题描述】:
我们需要通过输入表单更新 3 个不同表中的各个列。其中大部分是功能性的,但是当我们尝试更新已连接的其他 2 个表(发布者和类别)时,它会更新该记录以及具有相同输入的所有其他记录。
(例如,如果我们将流派从金属更改为爵士,那么所有金属 CD 也会更改为爵士)
以下是我们目前的更新代码。
$sql = "UPDATE nmc_cd, nmc_category, nmc_publisher
SET CDTitle ='$title', CDYear = '$year', nmc_publisher.pubID = '$publisherID', nmc_category.catID = '$categoryID', CDPrice = '$price', pubName ='$pubName', catDesc='$catDesc'
WHERE CDID = $id
AND nmc_category.catID = nmc_cd.catID
AND nmc_publisher.pubID = nmc_cd.pubID";
我对这个网站比较陌生,所以如果需要任何东西,例如代码、变量/函数的名称等,请说出来,我会编辑我的帖子或回复。
提前致谢!
【问题讨论】:
-
您不能在 1 个语句中执行此操作,您必须为每个要更新的表将其拆分为 1 个更新语句。最好创建一个事务并在所有 3 次更新后提交它。您还可以编写一个存储过程并在其中执行语句(再次在事务中)。
-
这可能属于 DBMS 特定的怪癖领域,而不是纯 SQL。请指定您的目标 DBMS,如果在一个查询中可以做到这一点,我们可以更具体。使用纯 SQL 可能不是。