PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách lấy khóa ngoại của bảng con có cùng giá trị với khóa tăng tự động chính của cha mẹ

DEFAULT sẽ hoạt động cho SERIAL vì nó đặt giá trị mặc định cho cột. Vì vậy,

INSERT INTO Purchase VALUES (DEFAULT,'Lendl');

nên làm việc. Nhưng PurchasedItem.purchaseID không có giá trị mặc định được đặt, vì vậy nó cố gắng chèn NULL (và null chưa có trong cột được tham chiếu), vì vậy nó không thành công.

thử:

INSERT INTO Purchase(custName) VALUES ('Lendl') RETURNING purchaseID;

bạn sẽ thấy giá trị của purchaseID đã chèn , sử dụng nó trong truy vấn tiếp theo:

INSERT INTO PurchasedItem(purchaseID, itemNo) VALUES (_the_value_above_, 111);
commit;

Nếu bạn muốn nó được sử dụng mà không cần tương tác, hãy sử dụng DO chặn với returning purchaseID into _value

cập nhật :

hoặc cte, smth như

WITH i AS (
  INSERT INTO Purchase(custName, orderedDate) 
  VALUES ('Lendl', '2016-09-28') 
  RETURNING purchaseID
)
insert into PurchasedItem
select i.purchaseID,'smth',3
from i


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách Cot () hoạt động trong PostgreSQL

  2. Tối ưu hóa truy vấn GROUP BY để truy xuất hàng mới nhất cho mỗi người dùng

  3. Cách cbrt () hoạt động trong PostgreSQL

  4. Có thể gọi các hàm trong một lược đồ khác từ bên trong các hàm plv8 không?

  5. BẢNG MÔ TẢ PostgreSQL Tương đương