我正在尝试找到一种方法来更新表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_code
和vendor_name
。
我正在使用ColdFusion,如果我想使用一些语句,可以使用<cftransaction>
与数据库保持联系但是,我想知道是否有办法在一个语句中执行此操作。
答案 0 :(得分:3)
您需要两个语句或trigger才能执行此操作。
答案 1 :(得分:3)
您有两种选择:
多个语句的问题在于,如果您从外部运行更新或插入应用程序,那么您的业务规则将不会受到尊重。如果您通过触发器进行这些更改,那么无论修改是来自您的应用程序,还是直接针对数据库进行查询,您的业务逻辑都将始终得到尊重。
答案 2 :(得分:1)
RedFilter对触发器的回答是最好的,imo。一种替代方案:您的MySQL版本是否支持存储过程?您可以触发一个语句(例如存储的proc),然后执行内部调用。不理想,但可能。