【发布时间】:2011-03-19 16:18:48
【问题描述】:
我想在表 A 中插入一行,但前提是表 B 中存在另一行。例如这样的事情......
IF EXISTS (SELECT * FROM B WHERE id=1)
INSERT INTO A
(id, value1, value2)
VALUES (1, 'foo', 'bar')
但是这不起作用。什么会?
【问题讨论】:
-
哇。这(插入一行之前检查条件)真的不是应用层的工作吗?如果该行实际上不存在,您会如何反应?
-
如果该行不存在,则无需发生任何事情。在这种情况下,只做一个这样的查询会更有效率。为了回答您的另一个问题,我认为将检查放在应用程序层中不会有更好的风格,因为无论如何它都在查询旁边。
-
我认为 Pekka 的观点是应用程序不知道查询的状态。如果条件为假,则查询成功。通常,您希望您的应用程序知道数据是否已保存。否则,您一开始就不会费心存储它。
标签: mysql insert conditional exists