Tôi đang sử dụng PostgreSQL.Chèn dữ liệu vào các bảng được liên kết bằng khóa ngoài
Customer
==================
Customer_ID | Name
Order
==============================
Order_ID | Customer_ID | Price
Để chèn một trật tự, đây là những gì tôi cần phải làm thường,
Ví dụ, "John" nơi "1,34" giá theo thứ tự.
(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.
Có 4 giao tiếp SQL với cơ sở dữ liệu liên quan đến hoạt động đơn giản này !!!
Có cách nào tốt hơn, có thể đạt được bằng cách sử dụng 1 câu lệnh SQL không?
Bạn có thể sửa đổi câu trả lời của mình để sử dụng "RETURNING" như depesz được đề xuất không? Vì vậy, chúng tôi không cần thực hiện truy vấn bổ sung [chọn customer_id từ khách hàng nơi name = 'John'] –
Đó không phải là một tối ưu hóa tôi sẽ làm. Đây là lý do: Thứ nhất, giữ mã đơn giản: Nếu lần chèn thứ hai vào thứ tự giống với mã đầu tiên, bạn có thể sử dụng cùng một mã để thực hiện cả hai lần chèn. Thứ hai: Không có khả năng đạt được hiệu suất thực sự. Vì bạn vừa mới thực hiện truy vấn trên khách hàng, và sau đó chèn, Postgres sẽ có hàng và chỉ mục thích hợp trong bộ nhớ cache, do đó, lựa chọn từ khách hàng sẽ nhanh như chớp. –