sql >> Database >  >> RDS >> Oracle

Hoe voeg ik een cluster toe aan een samengestelde sleutel?

De tabelkolom moet hetzelfde gegevenstype hebben als de clusterkolom. In jouw voorbeeld werkt dit prima:

create table test1 (
  id int
) cluster abc_clus(id);
Table TEST1 created.

Zelfs een samengestelde sleutel werkt, als het datatype overeenkomt:

create table test2 (
  a int,
  b int,
  primary key(a, b)
) cluster abc_clus(a);
Table TEST2 created.

Als het datatype echter anders is, krijgt u uw foutmelding:

create table test3 (
  vc varchar2(7)
) cluster abc_clus(vc);
ORA-01753: column definition incompatible with clustered column definition

En het datatype moet exact hetzelfde zijn, zelfs int en number zijn niet compatibel:

create table test4 (
  n NUMBER
) cluster abc_clus(n);
ORA-01753: column definition incompatible with clustered column definition

BEWERKEN:

U kunt zelfs samengestelde clusters hebben:

maak cluster idc_clus (i int,d datum);

maak index idc_clus_idx op cluster idc_clus;

maak tabel test5 (i int,d datum,primaire sleutel (i,d)) cluster idc_clus(i,d);




  1. Controleren op wijzigingen in een SQL Server-tabel?

  2. Opgeslagen SQL-aanroepprocedure voor elke rij zonder een cursor te gebruiken

  3. GROUP BY voor continue rijen in SQL

  4. een efficiënte manier om te testen of een tabelrij bestaat