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

Thay đổi loại cột trong bảng

Bạn cần một chỉ mục duy nhất dựa trên chức năng:

create table tt (
  DealID number(10) primary key,
  LegID number(10),
  OrigID number(10),
  Description varchar2(200 char)
);
create unique index tt_leg_orig_dscr_uk on tt (
  case when description = 'A' then description end,
  case when description = 'A' then legid end,
  case when description = 'A' then origid end
);

insert into tt values (1, 1, 1, 'A');
1 row(s) inserted.

insert into tt values (2, 1, 1, 'A');
ORA-00001: unique constraint (XXXXX.TT_LEG_ORIG_DSCR_UK) violated

insert into tt values (2, 1, 2, 'A');
1 row(s) inserted.

select * from tt;
DEALID  LEGID   ORIGID  DESCRIPTION
-----------------------------------
    1       1        1           A
    2       1        2           A
2 rows returned in 0.01 seconds

insert into tt values (3, 1, 1, 'B');
1 row(s) inserted.

insert into tt values (4, 1, 1, 'B');
1 row(s) inserted.

select * from tt order by 1;

DEALID  LEGID   ORIGID  DESCRIPTION
-----------------------------------
     1      1        1           A
     2      1        2           A
     3      1        1           B
     4      1        1           B
4 rows returned in 0.01 seconds 

Như bạn có thể thấy, chỉ mục duy nhất chỉ hoạt động với các bản ghi có mô tả ='A', nó cho phép có các bản ghi không phải là duy nhất cho các mô tả khác nhau.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tạo bảng dựa trên kiểu người dùng xác định

  2. Gọi chương trình Java từ trình kích hoạt cơ sở dữ liệu Oracle

  3. Tôi muốn truyền một đối số biến vào tệp SQL bên ngoài (PL / SQL với SQL * Plus)

  4. Cách định dạng một số dưới dạng tiền tệ trong Oracle

  5. Tại sao chuyển đổi không hợp lệ được yêu cầu MÃ LỖI:17132?