Truy vấn chỉ định cùng một ID cho hàng đang được đưa vào nếu nó nó đã tồn tại trong bảng


0 Phiếu
Đã hỏi 25/5/2016 bởi guv_828 (310 điểm)
Tôi đang chèn bản ghi khách hàng vào một table ở đâu, nếu một bản ghi có cùng tên đã tồn tại, tôi chỉ định cùng một ID kỷ lục mới được chèn vào. Giả sử table T đã có hồ sơ này:
ID | Name | Phone_Number | Date_Inserted
105| Sam  | 111111       | 04/03/2014
106| Rita | 222222       |04/03/2014
và tôi đang chèn này từ table A:
Name| Phone_Number
Sam | 333333
sau đó sau khi chèn, table T nên có:
ID | Name | Phone_Number | Date_Inserted
105| Sam  | 111111       | 04/03/2014
106| Rita | 222222       | 04/03/2014
105| Sam  | 333333       | 04/04/2014
mà không có sự thay đổi ở trên, nó sẽ trông giống như:
INSERT INTO T SELECT CustID.nextval,Name,Phone_Number,SYSDATE FROM A;
tôi đã suy nghĩ của việc sử dụng,
INSERT INTO T
  SELECT CASE 
           WHEN NOT EXISTS(select null from T WHERE T.Name=A.Name) THEN CustID.nextVal
           ELSE (select ID from T where T.Name=A.Name) 
         END, 
         Name,
         Phone_Number,
         SYSDATE 
   FROM A;
, nhưng tôi không chắc chắn nếu nó sẽ làm việc và nó có vẻ dư thừa/xấu cho hiệu suất. Nếu có một cách ưa thích để làm điều này, xin vui lòng cho tôi biết.

2 Câu trả lời

0 Phiếu
Đã trả lời 04/6/2016 bởi Hyginnes (450 điểm)
Nếu schema của bạn không được đặt trong đá, tôi sẽ có lẽ cấu hình lại nó do đó có là một "người" table và riêng biệt một bàn "người điện thoại". Với mà phân loại các thiết lập, bạn có thể kết hợp nhiều số điện thoại với một người, và bạn sẽ không được stomping trên IDs, hoặc tạo ra các nhầm lẫn cột ID trung học không phải là các phím chính.
Đã bình luận 06/6/2016 bởi fbesorry (140 điểm)
Bạn có thực sự muốn 2 hồ sơ với cùng ID chính trong bảng? Có lẽ một số thứ tự sẽ giúp đỡ để phân biệt hồ sơ.
0 Phiếu
Đã trả lời 04/6/2016 bởi Fubnicka (260 điểm)
Nếu schema của bạn không được đặt trong đá, tôi sẽ có lẽ cấu hình lại nó do đó có là một "người" table và riêng biệt một bàn "người điện thoại". Với mà phân loại các thiết lập, bạn có thể kết hợp nhiều số điện thoại với một người, và bạn sẽ không được stomping trên IDs, hoặc tạo ra các nhầm lẫn cột ID trung học không phải là các phím chính.
Đã bình luận 06/6/2016 bởi Bar_on (210 điểm)
Tôi có một khóa chính khác nhau.

ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...