Giả sử tôi có 3 cột trong bảng - A, B và C. Tôi muốn đảm bảo rằng nếu tôi chèn một số giá trị (giả sử x) vào cột A, tôi không thể chèn một tuple có B hoặc C bằng x, tức là, giá trị x sẽ duy trì duy nhất cho cột A cho tất cả các bộ dữ liệu.Giá trị ràng buộc SQL Oracle duy nhất trong nhiều cột
Lưu ý rằng x có thể được lặp lại trong A đối với một số bộ dữ liệu khác.
Tôi biết về mệnh đề UNIQUE trong SQL, nhưng đó chỉ là để đảm bảo rằng giá trị xuất hiện trong một cột cụ thể chỉ một lần. Vì các câu lệnh CHECK trong Oracle không cho phép các truy vấn con, tôi không thể tìm ra cách thực hiện điều này.
EDIT (thêm biết thêm)
Tiểu học trọng điểm là Employee_Number, trong khi 3 cột trong câu hỏi là LandlineNo, MobileNo và VOIP. Do đó cho rằng đây là một bài dự thi:
Employee_Number = 1, LandlineNo = x, MobileNo = y, VOIP = z
Sau đó, cụm từ này cho tuple khác sẽ KHÔNG được phép -
Employee_Number = 2, LandlineNo = a, MobileNo = x, VOIP = c
Mặt khác, chương trình này sẽ là tốt (có, 2 nhân viên có thể có cùng một số cùng loại)
Employee_Number = 2, LandlineNo = x, MobileNo = b, VOIP = c
Bạn có thể mở rộng câu hỏi của bạn với một ví dụ về hàng tốt và xấu? Cấu trúc và khóa chính của bảng là gì? –
Bạn có bị mắc kẹt với thiết kế bảng này không? Những gì bạn đang yêu cầu ist để có mỗi số đảm bảo được một loại nhất định. Vì vậy, tại sao không có một bảng "con số", primay chính là số (hoặc một id cộng với một ràng buộc duy nhất trên các con số nếu bạn thích điều đó) và sau đó bạn có một loại cột. Vì vậy, mỗi số là duy nhất và có một loại. Sau đó, trong bảng nhân viên của bạn, bạn chỉ có ba khóa ngoài cho bảng số đó (tức là ba số hoặc ba id). –
bạn đang sử dụng phiên bản Oracle nào? – Sebas