我正在使用PostgreSQL。将数据插入到通过外键链接的表中
Customer
==================
Customer_ID | Name
Order
==============================
Order_ID | Customer_ID | Price
要插入的顺序,这里是我需要平时做,
例如,“约翰”的地方“1.34”价格秩序。
(1) Get Customer_ID from Customer table, where name is "John"
(2) If there are no Customer_ID returned (There is no John), insert "John"
(3) Get Customer_ID from Customer table, where name is "John"
(4) Insert "Customer_ID" and "1.34" into Order table.
有4个SQL通信数据库涉及这个简单的操作!
有没有更好的方法,使用1个SQL语句可以实现?
你可以修改你的答案,使用“RETURNING”作为depesz建议?所以我们不需要执行额外的查询[从customer选择customer_id where name ='John'] – 2010-01-05 08:04:29
这不是我要做的优化。原因如下:首先,保持代码简单:如果第二次插入顺序与第一次插入相同,则可以使用相同的代码执行两次插入。其次:不可能有真正的性能提升。由于您刚刚完成了对客户的查询,然后插入,因此Postgres将在缓存中包含该行和相应的索引,因此从客户中选择的内容将闪电般快速。 – 2010-01-05 14:51:21