Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Ubah jenis kolom dalam tabel

Anda memerlukan indeks unik berbasis fungsi :

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 

Seperti yang Anda lihat, indeks unik hanya berfungsi dengan catatan dengan deskripsi ='A', Ini memungkinkan untuk memiliki catatan non-unik untuk deskripsi yang berbeda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara, di ORACLE, untuk menggabungkan beberapa baris baris menjadi satu, menggunakan dua tabel, di mana nilai akhir dipisahkan dengan koma?

  2. Oracle SQL - Cara mendapatkan penghitungan berdasarkan tanggal menjadi beberapa kolom di ORACLE

  3. Konfigurasikan SQL*Plus untuk tidak mengembalikan apa pun selain data

  4. Oracle 'INSERT ALL' mengabaikan duplikat

  5. Batasan Pemeriksaan Oracle