Tôi làm việc với Oracle 11g.
Tôi có một bảng:Điều khoản ngoại lệ vào không hoạt động khi tạo một ràng buộc
create table test (one number(2), two number(2));
Có 2 hàng:
insert into test (one, two) values (1, 1);
insert into test (one, two) values (2, null);
commit;
Bây giờ tôi có thể tạo một bảng ngoại lệ:
create table exceptions(row_id rowid,
owner varchar2(30),
table_name varchar2(30),
constraint varchar2(30));
Bây giờ tôi muốn tạo khóa chính cho thử nghiệm :
alter table test add constraint test_pk primary key (one, two) exceptions into exceptions;
Tất nhiên tôi nhận được lỗi sau: ORA-01449
Nhưng hàng gây ra ngoại lệ không nằm trong bảng ngoại lệ?
Ai cũng có thể giúp tôi. Cảm ơn trước
Wolfgang
bash Oracle chủ đề rõ ràng là một cách nhanh chóng để có được điểm ... làm thế nào là +2 này không phải là một bình luận duy nhất? Lỗi bạn nhận được là cho bạn biết các trường khóa chính không thể chứa các giá trị rỗng. Nó không có nghĩa là ngoại lệ của Oracle không hoạt động. Nhìn vào bàn của bạn, bạn có thấy bất kỳ mâu thuẫn nào không? – tbone
@tbone, đây không phải là về xử lý ngoại lệ. Đây là về mệnh đề "ngoại lệ vào". Những gì OP mô tả chính xác là trường hợp, và là một câu hỏi hợp pháp vì tài liệu không cho bạn biết thông tin này. Vấn đề là bạn không thể tạo ra ràng buộc và báo cáo ngoại lệ trong một bước. Làm thế nào là "bashing" Oracle? – DCookie
@DCookie Tôi hiểu về mệnh đề "ngoại lệ vào", nhưng tiêu đề là "ngoại lệ oracle không hoạt động". Nó không phải là một vấn đề Oracle (làm thế nào có thể các ràng buộc log ngoại lệ khi nó thậm chí không thể được tạo ra, bạn phải tạo ra nó trước khi tải null hoặc làm như bạn đề nghị khi tạo nó bị vô hiệu hóa). Sau khi tạo, nó có thể thực hiện công việc của mình. Tôi chỉ tìm thấy nó buồn cười mà tôi chạy vào một số "tại sao Oracle hút" chủ đề mà ngay lập tức đạt được điểm dựa trên, tốt, tôi không biết. Ví dụ: xem http://stackoverflow.com/questions/11191299/why-is-there-a-maximum-length-for-stored-procedure-names. – tbone