更新表A,使用一个SQL命令插入表B?

时间:2011-09-14 16:44:44

标签: mysql coldfusion insert

我正在尝试找到一种方法来更新表A的布尔值,然后在我的MySQL数据库的同一个SQL语句中创建表B中的记录(如果表A中的布尔值为false),这是可能的吗? ?或者,我是否需要创建两个不同的语句?

我现在的逻辑是这样的:

SELECT tbl_a.vendor_code, tbl_a.vendor_name, tbl_a.has_page 
FROM tbl_a 
WHERE tbl_a.vendor_code = 'myvendorcode'

如果上述查询在tbl_a.has_page上返回false,那么我想将记录更新为真

UPDATE tbl_a 
SET tbl_a.has_page = true 
WHERE tbl_a.vendor_code = 'myvendorcode'

然后,我想在tbl_b中创建一条新记录,并在我的新记录中的相应列中插入vendor_codevendor_name

我正在使用ColdFusion,如果我想使用一些语句,可以使用<cftransaction>与数据库保持联系但是,我想知道是否有办法在一个语句中执行此操作。

3 个答案:

答案 0 :(得分:3)

您需要两个语句或trigger才能执行此操作。

答案 1 :(得分:3)

您有两种选择:

  1. 多个陈述
  2. 触发
  3. 多个语句的问题在于,如果您从外部运行更新或插入应用程序,那么您的业务规则将不会受到尊重。如果您通过触发器进行这些更改,那么无论修改是来自您的应用程序,还是直接针对数据库进行查询,您的业务逻辑都将始终得到尊重。

答案 2 :(得分:1)

RedFilter对触发器的回答是最好的,imo。一种替代方案:您的MySQL版本是否支持存储过程?您可以触发一个语句(例如存储的proc),然后执行内部调用。不理想,但可能。