ืื™ืŸ ื“ื™ ืคื•ืกืกื˜ืขืคึผืก ืคื•ืŸ Highload ++ Siberia 2019 - 8 ื˜ืึทืกืงืก ืื•ื™ืฃ ืึธืจืึทืงืœืข

ื”ื™!

ืื•ื™ืฃ ื™ื•ื ื™ 24-25, ื“ื™ Highload++ Siberia 2019 ื–ื™ืฆื•ื ื’ ืื™ื– ื’ืขื”ืืœื˜ืŸ ืื™ืŸ ื ืึธื•ื•ืึธืกื™ื‘ื™ืจืกืง. ืื•ื ื“ื–ืขืจ ื’ื™ื™ื– ื–ืขื ืขืŸ ืื•ื™ืš ื“ืึธืจื˜. ื‘ืึทืจื™ื›ื˜ "ืึธืจืึทืงืœืข ืงืึทื ื˜ื™ื™ื ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– (CDB / PDB) ืื•ืŸ ื–ื™ื™ืขืจ ืคึผืจืึทืงื˜ื™ืฉ ื ื•ืฆืŸ ืคึฟืึทืจ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’", ืžื™ืจ ื•ื•ืขืœืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ื˜ืขืงืกื˜ ื•ื•ืขืจืกื™ืข ืึท ื‘ื™ืกืœ ืฉืคึผืขื˜ืขืจ. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืงื™ืœ, ื“ืึทื ืงืขืŸ ืึธืœืขื’ื‘ื•ื ื™ืŸ ืคื ืจ ื“ืข ืจ ืืจื’ืื ื™ื–ืืฆื™ ืข ืฐ ื™ ืื•ื™ ืš ืคื ืจ ื™ืขื“ ืŸ ื’ืขืงื•ืžืข ืŸ .

ืื™ืŸ ื“ื™ ืคื•ืกืกื˜ืขืคึผืก ืคื•ืŸ Highload ++ Siberia 2019 - 8 ื˜ืึทืกืงืก ืื•ื™ืฃ ืึธืจืึทืงืœืข
ืื™ืŸ ื“ืขื ืคึผืึธืกื˜ืŸ, ืžื™ืจ ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื˜ื™ื™ืœืŸ ืžื™ื˜ ืื™ืจ ื“ื™ ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื•ื˜ ืึทื–ื•ื™ ืึทื– ืื™ืจ ืงืขื ืขืŸ ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ื™ืŸ ืึธืจืึทืงืœืข ื•ื•ื™ืกืŸ. ื•ื ื˜ืขืจ ื“ืขืจ ื“ื•ืจื›ืฉื ื™ื˜ ื–ืขื ืขืŸ 8 ืคึผืจืึธื‘ืœืขืžืก, ืขื ื˜ืคึฟืขืจืŸ ืึธืคึผืฆื™ืขืก ืื•ืŸ ื“ืขืจืงืœืขืจื•ื ื’.

ื•ื•ืึธืก ืื™ื– ื“ื™ ืžืึทืงืกื™ืžื•ื ืกื™ืงื•ื•ืึทื ืก ื•ื•ืขืจื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜?

create sequence s start with 1;
 
select s.currval, s.nextval, s.currval, s.nextval, s.currval
from dual
connect by level <= 5;

  • 1
  • 5
  • 10
  • 25
  • ื ื™ื™ืŸ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื˜ืขื•ืช

ืขื ื˜ืคืขืจืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 8.1.6):
ืื™ืŸ ืึท ืื™ื™ืŸ ืกืงืœ ื•ื™ืกื–ืึธื’ื•ื ื’, ืึธืจืึทืงืœืข ื™ื ืงืจืึทืžืึทื ื˜ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ื‘ืœื•ื™ื– ืึทืžืึธืœ ืคึผืขืจ ืจื•ื“ืขืจืŸ. ืื•ื™ื‘ ืึท ื“ืขืจืงืœืขืจื•ื ื’ ื›ึผื•ืœืœ ืžืขืจ ื•ื•ื™ ืื™ื™ืŸ ืจืขืคึฟืขืจืขื ืฅ ืฆื• NEXTVAL ืคึฟืึทืจ ืึท ืกื™ืงื•ื•ืึทื ืก, ืึธืจืึทืงืœืข ื™ื ืงืจืึทืžืึทื ืฅ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ืึทืžืึธืœ ืื•ืŸ ืงืขืจื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขืจื˜ ืคึฟืึทืจ ืึทืœืข ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ NEXTVAL. ืื•ื™ื‘ ืึท ื“ืขืจืงืœืขืจื•ื ื’ ื›ึผื•ืœืœ ืจืขืคืขืจืขื ืฆืŸ ืฆื• CURRVAL ืื•ืŸ NEXTVAL, ืึธืจืึทืงืœืข ื™ื ืงืจืึทืžืึทื ืฅ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ืื•ืŸ ืงืขืจื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขืจื˜ ืคึฟืึทืจ ื‘ื™ื™ื“ืข CURRVAL ืื•ืŸ NEXTVAL ืจืึทื’ืึทืจื“ืœืึทืก ืคื•ืŸ ื–ื™ื™ืขืจ ืกื“ืจ ืื™ืŸ ื“ืขืจ ื“ืขืจืงืœืขืจื•ื ื’.

ืื–ื•ื™, ื“ืขืจ ื“ื™ ืžืึทืงืกื™ืžื•ื ื•ื•ืขืจื˜ ื•ื•ืขื˜ ืฉื˜ื™ืžืขืŸ ืฆื• ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืฉื•ืจื•ืช, ื“ืึธืก ืื™ื– 5.

ื•ื•ื™ ืคื™ืœืข ืจืึธื•ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜?

create table t(i integer check (i < 5));
 
create procedure p(p_from integer, p_to integer) as
begin
    for i in p_from .. p_to loop
        insert into t values (i);
    end loop;
end;
/
 
exec p(1, 3);
exec p(4, 6);
exec p(7, 9);

  • 0
  • 3
  • 4
  • 5
  • 6
  • 9

ืขื ื˜ืคืขืจืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 11.2):

ืื™ื™ื“ืขืจ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืงื™ื™ืŸ ืกืงืœ ื•ื™ืกื–ืึธื’ื•ื ื’, ืึธืจืึทืงืœืข ืžืึทืจืงืก ืึทืŸ ื™ืžืคึผืœื™ืกืึทื˜ ืกืึทื•ื•ืขืคึผืึธื™ื ื˜ (ื ื™ื˜ ื‘ื ื™ืžืฆื ืฆื• ืื™ืจ). ื“ืขืจื ืึธืš, ืื•ื™ื‘ ื“ื™ ื•ื™ืกื–ืึธื’ื•ื ื’ ืคื™ื™ืœื–, ืึธืจืึทืงืœืข ืจืึธืœืœืก ืขืก ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืื•ืŸ ืงืขืจื˜ ื“ื™ ืึธื ื•ื•ืขื ื“ืœืขืš ื˜ืขื•ืช ืงืึธื“ ืฆื• SQLCODE ืื™ืŸ ื“ื™ SQLCA. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืึท INSERT ื•ื™ืกื–ืึธื’ื•ื ื’ ื– ืึท ื˜ืขื•ืช ื“ื•ืจืš ื˜ืจื™ื™ื ื’ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืึท ื“ื•ืคึผืœื™ืงืึทื˜ ื•ื•ืขืจื˜ ืื™ืŸ ืึท ื™ื™ื ืฆื™ืง ืื™ื ื“ืขืงืก, ื“ื™ ื•ื™ืกื–ืึธื’ื•ื ื’ ืื™ื– ืจืึธื•ืœื“ ืฆื•ืจื™ืง.

ืจื•ืคืŸ HP ืคึฟื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ืื™ื– ืื•ื™ืš ื‘ืื˜ืจืื›ื˜ ืื•ืŸ ืคึผืจืึทืกืขืกื˜ ื•ื•ื™ ืึท ืื™ื™ืŸ ื•ื™ืกื–ืึธื’ื•ื ื’. ืื–ื•ื™, ื“ืขืจ ืขืจืฉื˜ืขืจ ื”ืคึผ ืจื•ืคืŸ ืงืึทืžืคึผืœื™ืฅ ื”ืฆืœื—ื”, ื ืึธืš ื™ื ืกืขืจื˜ืึทื“ ื“ืจื™ื™ึท ืจืขืงืึธืจื“ืก; ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ื”ืคึผ ืจื•ืคืŸ ืขื ื“ืก ืžื™ื˜ ืึท ื˜ืขื•ืช ืื•ืŸ ืจืึธืœืœืก ืฆื•ืจื™ืง ื“ื™ ืคืขืจื˜ ืจืขืงืึธืจื“ ืึทื– ืขืก ืื™ื– ื’ืขืจืื˜ืŸ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ; ื“ื™ ื“ืจื™ื˜ืข ืจื•ืคืŸ ืคื™ื™ืœื–, ืื•ืŸ ืขืก ื–ืขื ืขืŸ ื“ืจื™ื™ ืจืขืงืึธืจื“ืก ืื™ืŸ ื“ื™ ื˜ื™ืฉ.

ื•ื•ื™ ืคื™ืœืข ืจืึธื•ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜?

create table t(i integer, constraint i_ch check (i < 3));
 
begin
    insert into t values (1);
    insert into t values (null);
    insert into t values (2);
    insert into t values (null);
    insert into t values (3);
    insert into t values (null);
    insert into t values (4);
    insert into t values (null);
    insert into t values (5);
exception
    when others then
        dbms_output.put_line('Oops!');
end;
/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

ืขื ื˜ืคืขืจืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 11.2):

ื ื˜ืฉืขืง ืงืึทื ืกื˜ืจื™ื™ื ืฅ ืœืขืฅ ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ืฆื•ืฉื˜ืึทื ื“ ืึทื– ื™ืขื“ืขืจ ืจื•ื“ืขืจืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ืžื•ื–ืŸ ื‘ืึทืคืจื™ื“ื™ืงืŸ. ืฆื• ื‘ืึทืคืจื™ื“ื™ืงืŸ ื“ื™ ืงืึทื ืกื˜ืจื™ื™ื ืฅ, ื™ืขื“ืขืจ ืจื•ื“ืขืจืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ืžื•ื–ืŸ ืžืึทื›ืŸ ื“ื™ ืฆื•ืฉื˜ืึทื ื“ ืึธื“ืขืจ TRUE ืึธื“ืขืจ ืื•ืžื‘ืึทืงืึทื ื˜ (ืจืขื›ื˜ ืฆื• ืึท ื ืึทืœ). ื•ื•ืขืŸ ืึธืจืึทืงืœืข ื™ื•ื•ืึทืœื™ื•ื™ื™ืฅ ืึท ืงืึธื ื˜ืจืึธืœ ืงืึทื ืกื˜ืจื™ื™ื ืฅ ืฆื•ืฉื˜ืึทื ื“ ืคึฟืึทืจ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืจื•ื“ืขืจืŸ, ืงื™ื™ืŸ ื–ื™ื™ึทืœ ื ืขืžืขืŸ ืื™ืŸ ื“ื™ ืฆื•ืฉื˜ืึทื ื“ ืึธืคึผืฉื™ืงืŸ ืฆื• ื“ื™ ื–ื™ื™ึทืœ ื•ื•ืึทืœื•ืขืก ืื™ืŸ ื“ื™ ืจื•ื“ืขืจืŸ.

ืื–ื•ื™, ื“ื™ ื•ื•ืขืจื˜ ื ืึทืœ ื•ื•ืขื˜ ืคืึธืจืŸ ื“ื™ ื˜ืฉืขืง, ืื•ืŸ ื“ืขืจ ืึทื ืึธื ื™ืžืข ื‘ืึทื ื•ืฆืขืจืก ื‘ืœืึธืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื”ืฆืœื—ื” ื‘ื™ื– ืึทืŸ ืคึผืจื•ื•ื•ืŸ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ื“ื™ ื•ื•ืขืจื˜ 3. ื ืึธืš ื“ืขื, ื“ื™ ื˜ืขื•ืช ื”ืึทื ื“ืœื™ื ื’ ื‘ืœืึธืง ื•ื•ืขื˜ ื•ื™ืกืžืขืงืŸ ื“ื™ ื•ื™ืกื ืขื, ืงื™ื™ืŸ ืจืึธื•ืœื‘ืึทืง ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ, ืื•ืŸ ืื™ืŸ ื˜ื™ืฉ ื•ื•ืขืœืŸ ื‘ืœื™ื™ื‘ืŸ ืคื™ืจ ืจื™ื™ืขืŸ ืžื™ื˜ ื•ื•ืึทืœื•ืขืก 1, null, 2 ืื•ืŸ null ื•ื•ื™ื“ืขืจ.

ื•ื•ืึธืก ืคึผืขืจื– ืคื•ืŸ ื•ื•ืึทืœื•ืขืก ื•ื•ืขื˜ ื ืขืžืขืŸ ื“ื™ ื–ืขืœื‘ืข ืคึผืœืึทืฅ ืื™ืŸ ื“ื™ ื‘ืœืึธืง?

create table t (
    a char(1 char),
    b char(10 char),
    c char(100 char),
    i number(4),
    j number(14),
    k number(24),
    x varchar2(1 char),
    y varchar2(10 char),
    z varchar2(100 char));
 
insert into t (a, b, i, j, x, y)
    values ('Y', 'ะ’ะฐัั', 10, 10, 'ะ”', 'ะ’ะฐัั');

  • ื ืื•ืŸ X
  • ื‘ ืื•ืŸ ื™
  • C ืื•ืŸ K
  • C ืื•ืŸ Z
  • ืง ืื•ืŸ ื–
  • ืื™ืš ืื•ืŸ J
  • ื“ื–ืฉ ืื•ืŸ X
  • ืึทืœืข ืœื™ืกื˜ืขื“

ืขื ื˜ืคืขืจื“ืึธ ื–ืขื ืขืŸ ืขืงืกืขืจืคึผืฅ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (12.1.0.2) ืื•ื™ืฃ ืกื˜ืึธืจื™ื ื’ ืคืึทืจืฉื™ื“ืŸ ื˜ื™ื™ืคึผืก ืคื•ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ืึธืจืึทืงืœืข.

CHAR ื“ืึทื˜ืŸ ื˜ื™ืคึผ
ื“ื™ CHAR ื“ืึทื˜ืŸ ื˜ื™ืคึผ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ืึท ืคืึทืจืคืขืกื˜ื™ืงื˜-ืœืขื ื’ ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืจื™ืงืœ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืขืœืŸ. ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืขืœืŸ ื•ื•ืขืŸ ืื™ืจ ืžืึทื›ืŸ ื“ื™ื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก. ืึธืจืึทืงืœืข ื™ื ืฉื•ืจื– ืึทื– ืึทืœืข ื•ื•ืึทืœื•ืขืก ืกื˜ืึธืจื“ ืื™ืŸ ืึท CHAR ื–ื™ื™ึทืœ ื”ืึธื‘ืŸ ื“ื™ ืœืขื ื’ ืกืคึผืขืกื™ืคื™ืขื“ ื“ื•ืจืš ื’ืจื™ื™ืก ืื™ืŸ ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืœืขื ื’ ืกืขืžืึทื ื˜ื™ืงืก. ืื•ื™ื‘ ืื™ืจ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืึท ื•ื•ืขืจื˜ ื•ื•ืึธืก ืื™ื– ืงื™ืจืฆืขืจ ื•ื•ื™ ื“ื™ ื–ื™ื™ึทืœ ืœืขื ื’, ืึธืจืึทืงืœืข ืœื™ื™ื“ื™ืง-ืคึผืึทื“ืก ื“ื™ ื•ื•ืขืจื˜ ืฆื• ื–ื™ื™ึทืœ ืœืขื ื’.

VARCHAR2 ื“ืึทื˜ืึท ื˜ื™ืคึผ
ื“ื™ VARCHAR2 ื“ืึทื˜ืŸ ื˜ื™ืคึผ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืจื™ืงืœ ืคื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœ ืœืขื ื’ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืขืœืŸ. ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื›ืึทืจืึทืงื˜ืขืจ ืฉื˜ืขืœืŸ ื•ื•ืขืŸ ืื™ืจ ืžืึทื›ืŸ ื“ื™ื™ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก. ืึธืจืึทืงืœืข ืกื˜ืึธืจื– ืึท ื›ืึทืจืึทืงื˜ืขืจ ื•ื•ืขืจื˜ ืื™ืŸ ืึท VARCHAR2 ื–ื™ื™ึทืœ ืคึผื•ื ืงื˜ ื•ื•ื™ ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืขืก, ืึธืŸ ืงื™ื™ืŸ ืœื™ื™ื“ื™ืง ื•ื•ืึทื˜ืŸ, ืื•ื™ื‘ ื“ื™ ื•ื•ืขืจื˜ ืื™ื– ื ื™ืฉื˜ ื™ืงืกื™ื“ ื“ื™ ืœืขื ื’ ืคื•ืŸ ื“ื™ ื–ื™ื™ึทืœ.

ื ื•ืžืขืจ ื“ืึทื˜ืึท ื˜ื™ืคึผ
ื“ื™ ื ื•ืžืขืจ ื“ืึทื˜ืŸ ื˜ื™ืคึผ ืกื˜ืึธืจื– ื ื•ืœ ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ positive ืื•ืŸ ื ืขื’ืึทื˜ื™ื•ื• ืคืึทืจืคืขืกื˜ื™ืงื˜ ื ื•ืžืขืจืŸ ืžื™ื˜ ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืึทืœื•ืขืก ืคื•ืŸ 1.0 ืจืขื ื˜ื’ืขื  10-130 ืฆื• ืึธื‘ืขืจ ื ื™ืฉื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ 1.0 ืจืขื ื˜ื’ืขื  10126. ืื•ื™ื‘ ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึทืŸ ืึทืจื™ื˜ืžืขื˜ื™ืง ืื•ื™ืกื“ืจื•ืง ื•ื•ืขืžืขื ืก ื•ื•ืขืจื˜ ื”ืื˜ ืึทืŸ ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืขืจื˜ ื’ืจืขืกืขืจ ื•ื•ื™ ืึธื“ืขืจ ื’ืœื™ื™ึทืš ืฆื• 1.0 x 10126, ืึธืจืึทืงืœืข ืงืขืจื˜ ืึท ื˜ืขื•ืช. ื™ืขื“ืขืจ ื ื•ืžืขืจ ื•ื•ืขืจื˜ ืจื™ืงื•ื•ื™ื™ืขืจื– ืคื•ืŸ 1 ืฆื• 22 ื‘ื™ื˜ืขืก. ืžื™ื˜ ื“ืขื ืื™ืŸ ื—ืฉื‘ื•ืŸ, ื“ื™ ื–ื™ื™ึทืœ ื’ืจื™ื™ืก ืื™ืŸ ื‘ื™ื˜ืขืก ืคึฟืึทืจ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื ื•ืžืขืจื™ืง ื“ืึทื˜ืŸ ื•ื•ืขืจื˜ ื ื•ืžืขืจ (ืคึผ), ื•ื•ื• ืคึผ ืื™ื– ื“ื™ ืคึผื™ื ื˜ืœืขื›ืงื™ื™ึทื˜ ืคื•ืŸ ืึท ื’ืขื’ืขื‘ืŸ ื•ื•ืขืจื˜, ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื“ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืคืึธืจืžื•ืœืข: ROUND((ืœืขื ื’(ืคึผ)+s)/2))+1 ื•ื•ื• s ืื™ื– ื’ืœื™ื™ึทืš ื ื•ืœ ืื•ื™ื‘ ื“ื™ ื ื•ืžืขืจ ืื™ื– positive, ืื•ืŸ s ืื™ื– ื’ืœื™ื™ึทืš ืฆื• 1 ืื•ื™ื‘ ื“ื™ ื ื•ืžืขืจ ืื™ื– ื ืขื’ืึทื˜ื™ื•ื•.

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ ืึทืŸ ืขืงืกืขืจืคึผื˜ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื•ื•ืขื’ืŸ ืกื˜ืึธืจื™ื ื’ ื ื•ืœ ื•ื•ืึทืœื•ืขืก.

ื ื ืึทืœ ืื™ื– ื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ืึท ื•ื•ืขืจื˜ ืื™ืŸ ืึท ื–ื™ื™ึทืœ. ื ื•ืœื– ืึธื ื•ื•ื™ื™ึทื–ืŸ ืคืขืœื ื“ื™ืง, ืื•ืžื‘ืึทืงืึทื ื˜ ืึธื“ืขืจ ื™ื ืึทืคึผืœืึทืงืึทื‘ืึทืœ ื“ืึทื˜ืŸ. ื ืึทืœืก ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ื™ื‘ ื–ื™ื™ ืคืึทืœืŸ ืฆื•ื•ื™ืฉืŸ ืฉืคืืœื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ื•ื•ืึทืœื•ืขืก. ืื™ืŸ ื“ื™ ืงืึทืกืขืก, ื–ื™ื™ ื“ืึทืจืคืŸ 1 ื‘ื™ื™ื˜ ืฆื• ืงืจืึธื ื“ื™ ืœืขื ื’ ืคื•ืŸ ื“ื™ ื–ื™ื™ึทืœ (ื ื•ืœ). ื˜ืจื™ื™ืœื™ื ื’ ื ืึทืœืก ืื™ืŸ ืึท ืจื•ื“ืขืจืŸ ื“ืึทืจืคืŸ ืงื™ื™ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ื•ื•ื™ื™ึทืœ ืึท ื ื™ื™ึท ืจื•ื“ืขืจืŸ ื›ืขื“ืขืจ ืกื™ื’ื ืึทืœื– ืึทื– ื“ื™ ืจื•ืขืŸ ืฉืคืืœื˜ืŸ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืจื•ื“ืขืจืŸ ื–ืขื ืขืŸ ื ืึทืœ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ื“ื™ ืœืขืฆื˜ืข ื“ืจื™ื™ ืฉืคืืœื˜ืŸ ืคื•ืŸ ืึท ื˜ื™ืฉ ื–ืขื ืขืŸ ื ืึทืœ, ืงื™ื™ืŸ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืคึฟืึทืจ ื“ื™ ืฉืคืืœื˜ืŸ.

ื‘ืึทื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื“ืึทื˜ืŸ, ืžื™ืจ ื‘ื•ื™ืขืŸ ืจื™ื–ืึทื ื™ื ื’. ืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื ื™ืฆื˜ AL32UTF8 ืงืึธื“ื™ืจื•ื ื’. ืื™ืŸ ื“ืขื ืงืึธื“ื™ืจื•ื ื’, ืจื•ืกื™ืฉ ืื•ืชื™ื•ืช ื•ื•ืขื˜ ืคืึทืจื ืขืžืขืŸ 2 ื‘ื™ื˜ืขืก.

1) ื ืื•ืŸ X, ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืคืขืœื“ ืึท 'Y' ื ืขืžื˜ 1 ื‘ื™ื™ื˜, ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืคืขืœื“ x 'ื“' ื ืขืžื˜ 2 ื‘ื™ื˜ืขืก
2) ื‘ ืื•ืŸ ื™, 'ื•ื•ืึทืกื™ืึท' ืื™ืŸ ื‘ ื“ื™ ื•ื•ืขืจื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคึผืึทื“ื™ื“ ืžื™ื˜ ืกืคึผื™ื™ืกืึทื– ืึทืจื•ื™ืฃ ืฆื• 10 ืื•ืชื™ื•ืช ืื•ืŸ ื•ื•ืขื˜ ื ืขืžืขืŸ 14 ื‘ื™ื˜ืขืก, 'ื•ื•ืึทืกื™ืึท' ืื™ืŸ ื“ ื•ื•ืขื˜ ื ืขืžืขืŸ 8 ื‘ื™ื˜ืขืก.
3) C ืื•ืŸ K. ื‘ื™ื™ื“ืข ืคืขืœื“ืขืจ ื”ืึธื‘ืŸ ื“ื™ ื•ื•ืขืจื˜ NULL, ื ืึธืš ื–ื™ื™ ืขืก ื–ืขื ืขืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคืขืœื“ืขืจ, ืึทื–ื•ื™ ื–ื™ื™ ืคืึทืจื ืขืžืขืŸ 1 ื‘ื™ื™ื˜.
4) C ืื•ืŸ Z. ื‘ื™ื™ื“ืข ืคืขืœื“ืขืจ ื”ืึธื‘ืŸ ื“ื™ ื•ื•ืขืจื˜ NULL, ืึธื‘ืขืจ ืคืขืœื“ Z ืื™ื– ื“ื™ ืœืขืฆื˜ืข ืื™ืŸ ื“ื™ ื˜ื™ืฉ, ืึทื–ื•ื™ ืขืก ื ืขืžื˜ ื ื™ืฉื˜ ืคึผืœืึทืฅ (0 ื‘ื™ื˜ืขืก). ืคืขืœื“ C ืึทืงื™ืึทืคึผื™ื™ื– 1 ื‘ื™ื™ื˜.
5 ) ืง ืื•ืŸ ื– ืขื ืœื™ืš ืฆื•ื ืคืจื™ืขืจื“ื™ืงืŸ ืคืืœ. ื“ื™ ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ ืง ืคืขืœื“ ืึทืงื™ืึทืคึผื™ื™ื– 1 ื‘ื™ื™ื˜, ืื™ืŸ ื– - 0.
6) ืื™ืš ืื•ืŸ J. ืœื•ื™ื˜ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื‘ื™ื™ื“ืข ื•ื•ืึทืœื•ืขืก ื•ื•ืขื˜ ื ืขืžืขืŸ 2 ื‘ื™ื˜ืขืก. ืžื™ืจ ืจืขื›ืขื ืขืŸ ื“ื™ ืœืขื ื’ ืžื™ื˜ ื“ื™ ืคืึธืจืžื•ืœืข ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ: round( (1 + 0)/2) +1 = 1 + 1 = 2.
7) J ืื•ืŸ X. ื“ื™ ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ J ืคืขืœื“ ื•ื•ืขื˜ ื ืขืžืขืŸ 2 ื‘ื™ื˜ืขืก, ื“ื™ ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ X ืคืขืœื“ ื•ื•ืขื˜ ื ืขืžืขืŸ 2 ื‘ื™ื˜ืขืก.

ืื™ืŸ ื’ืึทื ืฅ, ื“ื™ ืจื™ื›ื˜ื™ืง ืึธืคึผืฆื™ืขืก ื–ืขื ืขืŸ: C ืื•ืŸ K, I ืื•ืŸ J, J ืื•ืŸ X.

ื•ื•ืึธืก ื‘ืขืขืจืขืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ืคื•ืŸ ื“ื™ T_I ืื™ื ื“ืขืงืก?

create table t (i integer);
 
insert into t select rownum from dual connect by level <= 10000;
 
create index t_i on t(i);

  • ื•ื•ืขื’ืŸ ืฆืขื ื“ืœื™ืงืขืจ
  • ื•ื•ืขื’ืŸ ื”ื•ื ื“ืขืจื˜ืขืจ
  • ื•ื•ืขื’ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ
  • ื•ื•ืขื’ืŸ ืฆืขื ื“ืœื™ืงืขืจ ื˜ื•ื™ื–ื ื˜ืขืจ

ืขื ื˜ืคืขืจืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 12.1):

ืคึฟืึทืจ ืึท ื‘-ื‘ื•ื™ื ืื™ื ื“ืขืงืก, ื“ื™ ืื™ื ื“ืขืงืก ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ืžื™ื˜ืœืขืŸ ื“ื™ ื’ืฉืžื™ื•ืช ื’ืจื•ืคึผื™ื ื’ ืคื•ืŸ ืจืึธื•ื– ืื™ืŸ ื‘ืึทืฆื™ื•ื ื’ ืฆื• ืึทืŸ ืื™ื ื“ืขืงืก ื•ื•ืขืจื˜.

ื“ืขืจ ืื™ื ื“ืขืงืก ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื”ืขืœืคึผืก ื“ื™ ืึธืคึผื˜ื™ืžื™ื–ืขืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ืึทืŸ ืื™ื ื“ืขืงืก ื™ื‘ืขืจืงื•ืงืŸ ืึธื“ืขืจ ืคื•ืœ ื˜ื™ืฉ ื™ื‘ืขืจืงื•ืงืŸ ืื™ื– ืžืขืจ ืขืคืขืงื˜ื™ื•ื• ืคึฟืึทืจ ื–ื™ื›ืขืจ ืคึฟืจืื’ืŸ). ื ื ื™ื“ืขืจื™ืง ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื™ื ื“ื™ืงื™ื™ืฅ ืึท ืขืคืขืงื˜ื™ื•ื• ืื™ื ื“ืขืงืก ื™ื‘ืขืจืงื•ืงืŸ.

ื ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื•ื•ืึธืก ืื™ื– ื ืึธืขื ื˜ ืฆื• ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื‘ืœืึทืงืก ืื™ืŸ ืึท ื˜ื™ืฉ ื™ื ื“ื™ืงื™ื™ืฅ ืึทื– ื“ื™ ืจืึธื•ื– ื–ืขื ืขืŸ ืคื™ื–ื™ืงืœื™ ืึธืจื“ืขืจื“ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ื‘ืœืึทืงืก ื“ื•ืจืš ื“ื™ ืื™ื ื“ืขืงืก ืฉืœื™ืกืœ. ืื•ื™ื‘ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคึผืขืจืคืึธืจืžื– ืึท ืคื•ืœ ื˜ื™ืฉ ื™ื‘ืขืจืงื•ืงืŸ, ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื˜ืขื ื“ื– ืฆื• ืฆื•ืจื™ืงืงืจื™ื’ืŸ ื“ื™ ืจืึธื•ื– ื•ื•ื™ ื–ื™ื™ ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื•ื™ืฃ ื“ื™ืกืง, ืื•ื™ืกื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ื™ ืื™ื ื“ืขืงืก ืฉืœื™ืกืœ. ื ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื•ื•ืึธืก ืื™ื– ื ืึธืขื ื˜ ืฆื• ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจืึธื•ื– ื™ื ื“ื™ืงื™ื™ืฅ ืึทื– ื“ื™ ืจืึธื•ื– ื–ืขื ืขืŸ ืฆืขื•ื•ืึธืจืคืŸ ืจืึทื ื“ืึทืžืœื™ ืึทืจื™ื‘ืขืจ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ืœืึทืงืก ืื™ืŸ ื‘ืึทืฆื™ื•ื ื’ ืฆื• ื“ื™ ืื™ื ื“ืขืงืก ืฉืœื™ืกืœ. ืื•ื™ื‘ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคึผืขืจืคืึธืจืžื– ืึท ืคื•ืœ ื˜ื™ืฉ ื™ื‘ืขืจืงื•ืงืŸ, ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ืฆื•ืจื™ืงืงืจื™ื’ืŸ ืจืึธื•ื– ืื™ืŸ ืงื™ื™ืŸ ืกืึธืจื˜ื™ืจื˜ ืกื“ืจ ื“ื•ืจืš ื“ืขื ืื™ื ื“ืขืงืก ืฉืœื™ืกืœ.

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื™ื™ื“ื™ืœื™ ืื•ื™ืกื’ืขืฉื˜ืขืœื˜, ืึทื–ื•ื™ ื“ื™ ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• ืึธื“ืขืจ ื ืึธืขื ื˜ ืฆื• ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคืึทืจื ื•ืžืขืŸ ื‘ืœืึทืงืก ืื™ืŸ ื“ื™ ื˜ื™ืฉ. ืคึฟืึทืจ ืึท ื ืึธืจืžืึทืœ ื‘ืœืึธืง ื’ืจื™ื™ืก ืคื•ืŸ 8 ืงื™ืœืื‘ื™ื™ื˜, ืื™ืจ ืงืขื ืขืŸ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืึทื– ื•ื•ืขื’ืŸ ืึท ื˜ื•ื™ื–ื ื˜ ืฉืžืึธืœ ื ื•ืžืขืจ ื•ื•ืึทืœื•ืขืก ื•ื•ืขื˜ ืคึผืึทืกื™ืง ืื™ืŸ ืื™ื™ืŸ ื‘ืœืึธืง, ืึทื–ื•ื™ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื‘ืœืึทืงืก, ืื•ืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ืงืœืึทืกื˜ืขืจื™ื ื’ ืคืึทืงื˜ืึธืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื•ื•ืขื’ืŸ ืฆืขื ื“ืœื™ืงืขืจ.

ืื™ืŸ ื•ื•ืึธืก ื•ื•ืึทืœื•ืขืก ืคื•ืŸ N ื•ื•ืขื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜ ื”ืฆืœื—ื” ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ืึท ืจืขื’ื•ืœืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ืžื™ื˜ ื ืึธืจืžืึทืœ ืกืขื˜ื˜ื™ื ื’ืก?

create table t (
    a varchar2(N char),
    b varchar2(N char),
    c varchar2(N char),
    d varchar2(N char));
 
create index t_i on t (a, b, c, d);

  • 100
  • 200
  • 400
  • 800
  • 1600
  • 3200
  • 6400

ืขื ื˜ืคืขืจืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 11.2):

ืœืึทื“ื–ืฉื™ืงืึทืœ ื“ืึทื˜ืึทื‘ืึทืกืข ืœื™ืžื™ืฅ

ื ื•ืžืขืจ
ื˜ื™ืคึผ ืคื•ืŸ ืœื™ืžื™ื˜
ืœื™ืžื™ื˜ ื•ื•ืขืจื˜

ื™ื ื“ืขืงืกื™ื–
ื’ืึทื ืฅ ื’ืจื™ื™ืก ืคื•ืŸ ื™ื ื“ืขืงืกื˜ ื–ื™ื™ึทืœ
75% ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื‘ืœืึธืง ื’ืจื™ื™ืก ืžื™ื ื•ืก ืขื˜ืœืขื›ืข ืึธื•ื•ื•ืขืจื›ืขื“

ืื–ื•ื™, ื“ื™ ื’ืึทื ืฅ ื’ืจื™ื™ืก ืคื•ืŸ ื™ื ื“ืขืงืกื˜ ืฉืคืืœื˜ืŸ ื–ืึธืœ ื ื™ืฉื˜ ื™ืงืกื™ื“ 6Kb. ื•ื•ืึธืก ื›ืึทืคึผืึทื ื– ื•ื•ื™ื™ึทื˜ืขืจ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื‘ืึทื–ืข ืงืึธื“ื™ืจื•ื ื’. ืคึฟืึทืจ AL32UTF8 ืงืึธื“ื™ืจื•ื ื’, ืื™ื™ืŸ ื›ืึทืจืึทืงื˜ืขืจ ืงืขื ืขืŸ ืคืึทืจื ืขืžืขืŸ ืึท ืžืึทืงืกื™ืžื•ื ืคื•ืŸ 4 ื‘ื™ื˜ืขืก, ืึทื–ื•ื™ ืื™ืŸ ื“ื™ ืขืจื’ืกื˜ ืคืึทืœ ืกืฆืขื ืึทืจ, ื•ื•ืขื’ืŸ 6 ืื•ืชื™ื•ืช ื•ื•ืขื˜ ืคึผืึทืกื™ืง ืื™ืŸ 1500 ืงื™ืœืื‘ื™ื™ื˜. ื“ืขืจื™ื‘ืขืจ, ืึธืจืึทืงืœืข ื•ื•ืขื˜ ื ื™ืฉื˜ ื“ืขืจืœื•ื™ื‘ืŸ ืื™ื ื“ืขืงืก ืฉืึทืคื•ื ื’ ื‘ื™ื™ N = 400 (ื•ื•ืขืŸ ื“ื™ ืขืจื’ืกื˜ ืคืึทืœ ืฉืœื™ืกืœ ืœืขื ื’ ืื™ื– 1600 ืื•ืชื™ื•ืช * 4 ื‘ื™ื˜ืขืก + ืจืึธื•ื•ื™ื“ ืœืขื ื’), ื‘ืฉืขืช ื‘ื™ื™ N = 200 (ืึธื“ืขืจ ื•ื•ื™ื™ื ื™ืงืขืจ) ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืื™ื ื“ืขืงืก ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืึธืŸ ืคืจืื‘ืœืขืžืขืŸ.

ื“ื™ INSERT ืึธืคึผืขืจืึทื˜ืึธืจ ืžื™ื˜ ื“ื™ APPEND ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ ืื™ื– ื“ื™ื–ื™ื™ื ื“ ืฆื• ืœืึธื“ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ืจืขืงื˜ ืžืึธื“ืข. ื•ื•ืึธืก ื›ืึทืคึผืึทื ื– ืื•ื™ื‘ ืขืก ืื™ื– ื’ืขื•ื•ืขื ื“ื˜ ืฆื• ื“ืขืจ ื˜ื™ืฉ ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ืฆื™ื ื’ืœ ื›ืึทื ื’ื–?

  • ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ืจืขืงื˜ ืžืึธื“ืข, ื“ื™ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜
  • ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ืจืขืงื˜ ืžืึธื“ืข, ืึธื‘ืขืจ ื“ื™ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“
  • ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืžืึธื“ืข, ื“ื™ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ ืขืก ื–ืึธืœ
  • ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืžืึธื“ืข, ืึธื‘ืขืจ ื“ื™ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“
  • ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“, ืึท ื˜ืขื•ืช ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจืขืงืึธืจื“ืขื“

ืขื ื˜ืคืขืจื‘ื™ื™ืกื™ืงืœื™, ื“ืึธืก ืื™ื– ืžืขืจ ืึท ืงืฉื™ื ืคื•ืŸ ืœืึธื’ื™ืง. ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ืขื ื˜ืคึฟืขืจืŸ, ืื™ืš ื•ื•ืึธืœื˜ ืคึฟืึธืจืฉืœืึธื’ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืจื™ื–ืึทื ื™ื ื’ ืžืึธื“ืขืœ:

  1. ื™ื ืกืขืจืฉืึทืŸ ืื™ืŸ ื“ื™ืจืขืงื˜ ืžืึธื“ืข ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ื“ื•ืจืš ื“ื™ืจืขืงื˜ ืคืึธืจืžื™ืจื•ื ื’ ืคื•ืŸ ืึท ื“ืึทื˜ืŸ ื‘ืœืึธืง, ื‘ื™ื™ืคึผืึทืกื™ื ื’ ื“ื™ ืกืงืœ ืžืึธื˜ืึธืจ, ื•ื•ืึธืก ื™ื ืฉื•ืจื– ื”ื•ื™ืš ื’ื™ื›ืงื™ื™ึทื˜. ืึทื–ื•ื™, ื™ื ืฉื•ืจื™ื ื’ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ืฆื™ื ื’ืœ ืื™ื– ื–ื™ื™ืขืจ ืฉื•ื•ืขืจ, ืื•ื™ื‘ ื ื™ืฉื˜ ืื•ืžืžืขื’ืœืขืš, ืื•ืŸ ืขืก ืื™ื– ืงื™ื™ืŸ ืคื•ื ื˜ ืื™ืŸ ื“ืขื, ื•ื•ื™ื™ึทืœ ืขืก ื•ื•ืขื˜ ื ืึธืš ืจืึทื“ื™ืงืึทืœืœื™ ืคึผืึทืžืขืœืขืš ืึทืจืึธืคึผ ื“ื™ ื™ื ืกืขืจืฉืึทืŸ.
  2. ื“ื•ืจื›ืคืึทืœ ืฆื• ื•ื™ืกืคื™ืจืŸ ื“ื™ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ืคื™ืจืŸ ืฆื• ื“ื™ ืคืึทืงื˜ ืึทื– ืื•ื™ื‘ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ื–ืขื ืขืŸ ื“ื™ ื–ืขืœื‘ืข, ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื•ื•ื™ ืึท ื’ืึทื ืฅ (ืื ื“ืขืจืข ื˜ื™ืฉืŸ) ื•ื•ืขื˜ ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืžืึธื“ืข ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื™ื ืกืขืจื˜ืึทื“. ื“ืึธืก ื•ื•ืขื˜ ื“ืึธืš ืฆืขืฉื˜ืขืจืŸ ื“ืึทื˜ืŸ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ืื•ืŸ ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ืขื ื“ื˜ ื•ื•ื™ ืึท ืœื™ื™ื–ื•ื ื’ ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข.
  3. ื“ื™ ื™ื ืึทื‘ื™ืœื™ื˜ื™ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ื‘ื›ืœืœ ื‘ืื”ืื ื“ืœื˜ ื•ื•ื™ ืึท ื˜ืขื•ืช. ืื‘ืขืจ ื“ืึธ ืžื™ืจ ื–ืึธืœ ื’ืขื“ืขื ืงืขืŸ ืึทื– APPEND ืื™ื– ืึท ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ, ืื•ืŸ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ืœืึธื’ื™ืง ืคื•ืŸ ื”ื™ื ืฅ ืื™ื– ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ืื•ื™ื‘ ืžืขื’ืœืขืš, ืึธื‘ืขืจ ืื•ื™ื‘ ื ื™ืฉื˜, ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืึธืŸ ื’ืขื ื•ืžืขืŸ ื“ื™ ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ.

ืึทื–ื•ื™ ื“ืขืจ ื“ืขืจื•ื•ืึทืจื˜ ืขื ื˜ืคืขืจ ืื™ื– ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ื ืึธืจืžืึทืœ (SQL) ืžืึธื“ืข, ื“ืขืจ ืฆื™ื ื’ืœ ื•ื•ืขื˜ ืคื™ื™ืขืจืŸ.

ืœื•ื™ื˜ ืึธืจืึทืงืœืข ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ (ืฆื™ื˜ื™ืจื˜ืŸ ืคึฟื•ืŸ 8.04):

ื•ื•ื™ื™ืึทืœื™ื™ืฉืึทื ื– ืคื•ืŸ ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ื•ื•ืขื˜ ืคืึทืจืฉืึทืคืŸ ื“ื™ ื“ืขืจืงืœืขืจื•ื ื’ ืฆื• ื•ื™ืกืคื™ืจืŸ ืกื™ืจื™ืึทืœ, ื ื™ืฆืŸ ื“ื™ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ื“ืจืš, ืึธืŸ ื•ื•ืึธืจื ื™ื ื’ื– ืึธื“ืขืจ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ. ืึท ื•ื™ืกื ืขื ืื™ื– ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทืŸ ืื•ื™ืฃ ืกื˜ื™ื™ื˜ืžืึทื ืฅ ืึทืงืกืขืกื™ื ื’ ื“ื™ ื–ืขืœื‘ืข ื˜ื™ืฉ ืžืขืจ ื•ื•ื™ ืึทืžืึธืœ ืื™ืŸ ืึท ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ, ื•ื•ืึธืก ืงืขืŸ ืคืึทืจืฉืึทืคืŸ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ.
ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ื˜ืจื™ื’ืขืจื– ืึธื“ืขืจ ืจืขืคืขืจืขื ื˜ืฉืึทืœ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ื–ืขื ืขืŸ ืคืึธืจืฉื˜ืขืœืŸ ืื•ื™ืฃ ื“ื™ ื˜ื™ืฉ, ื“ื™ APPEND ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ื’ื ืึธืจื™ืจื˜ ื•ื•ืขืŸ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ืจืขืงื˜-ืžืึทืกืข INSERT (ืกื™ืจื™ืึทืœ ืึธื“ืขืจ ืคึผืึทืจืึทืœืขืœ), ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ืคึผืึทืจืึทืœืขืœ ืึธื ืฆื•ื”ืขืจืขื ื™ืฉ ืึธื“ืขืจ ืคึผื•ื ืงื˜, ืื•ื™ื‘ ืขืก ืื™ื–.

ื•ื•ืึธืก ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ื•ื•ืขืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืฉืจื™ืคื˜ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“?

create table t(i integer not null primary key, j integer references t);
 
create trigger t_a_i after insert on t for each row
declare
    pragma autonomous_transaction;
begin
    insert into t values (:new.i + 1, :new.i);
    commit;
end;
/
 
insert into t values (1, null);

  • ื’ืขืจืึธื˜ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’
  • ื“ื•ืจื›ืคืึทืœ ืจืขื›ื˜ ืฆื• ืกื™ื ื˜ืึทืงืก ื˜ืขื•ืช
  • ื˜ืขื•ืช: ืึทื•ื˜ืึธื ืึธืžืึธื•ืก ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืื™ื– ื ื™ื˜ ื’ื™ืœื˜ื™ืง
  • ื˜ืขื•ืช ืฉื™ื™ึทื›ื•ืช ืฆื• ื™ืงืกื™ื“ ื“ื™ ืžืึทืงืกื™ืžื•ื ืจื•ืคืŸ ื ืขืกื˜ื™ื ื’
  • ืคืจืขืžื“ ืฉืœื™ืกืœ ื”ื™ืœืขืœ ื˜ืขื•ืช
  • ื˜ืขื•ืช ืฉื™ื™ึทื›ื•ืช ืฆื• ืœืึทืงืก

ืขื ื˜ืคืขืจื“ื™ ื˜ื™ืฉ ืื•ืŸ ืฆื™ื ื’ืœ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ื’ืึทื ืฅ ืจื™ื›ื˜ื™ืง ืื•ืŸ ื“ืขื ืึธืคึผืขืจืึทืฆื™ืข ื–ืึธืœ ื ื™ืฉื˜ ืคื™ืจืŸ ืฆื• ืคึผืจืึธื‘ืœืขืžืก. ืึธื˜ืึทื ืึทืžืึทืก ื˜ืจืึทื ื–ืึทืงืฉืึทื ื– ืื™ืŸ ืึท ืฆื™ื ื’ืœ ื–ืขื ืขืŸ ืื•ื™ืš ืขืจืœื•ื™ื‘ื˜, ืึทื ื“ืขืจืฉ ืœืึธื’ื™ื ื’ ื•ื•ืึธืœื˜ ื ื™ื˜ ื–ื™ื™ืŸ ืžืขื’ืœืขืš, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ.

ื ืื›ืŸ ืื™ื™ื ืฉื˜ืขืœืŸ ื“ื™ ืขืจืฉื˜ืข ืจื•ื“ืขืจืŸ, ื•ื•ืืœื˜ ื ื’ืขืœื•ื ื’ืขื ืข ืฆื™ื ื’ืœ ืคื™ื™ืขืจ ืืจื™ื™ื ื’ืขืœื™ื™ื’ื˜ ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ืจื•ื“ืขืจืŸ, ื•ื•ืืก ื“ืขืจ ืฆื™ื ื’ืœ ื–ืืœ ื ืื›ืืžืืœ ืคื™ื™ืขืจืŸ, ืืจื™ื™ื ืœื™ื™ื’ืŸ ื ื“ืจื™ื˜ืข ืจื™ื™, ืื•ืŸ ืื–ื•ื™ ื•ื•ื™ื™ื˜ืขืจ ื‘ื™ื– ื“ื™ ืกื˜ืขื™ื˜ืžืขื ื˜ ืื™ื– ื“ื•ืจื›ื’ืขืคืืœืŸ ืฆื•ืœื™ื‘ ืื™ื‘ืขืจืฉืจื™ื™ื‘ืŸ ื“ื™ ืžืึทืงืกื™ืžื•ื ื ืขืกื˜ื™ื ื’ ืคื•ืŸ ืจื•ืคืŸ. ืึธื‘ืขืจ, ืืŸ ืื ื“ืขืจ ืกืึทื˜ืึทืœ ืคื•ื ื˜ ืงื•ืžื˜ ืื™ืŸ ืฉืคึผื™ืœ. ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ื•ื•ืขืŸ ื“ื™ ืฆื™ื ื’ืœ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“, ื“ื™ ืงืึธืžืžื™ื˜ ืื™ื– ื ืึธืš ื ื™ืฉื˜ ื’ืขืขื ื“ื™ืงื˜ ืคึฟืึทืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ื™ื ืกืขืจื˜ืึทื“ ืจืขืงืึธืจื“. ื“ืขืจื™ื‘ืขืจ, ืึท ืฆื™ื ื’ืœ ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืึท ืึธื˜ืึทื ืึทืžืึทืก ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืคืจื•ื•ื•ื˜ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืื™ืŸ ื“ื™ ื˜ื™ืฉ ืึท ืจื•ื“ืขืจืŸ ื•ื•ืึธืก ืจืขืคืขืจืขื ืฆืŸ ืึท ืคืจืขืžื“ ืฉืœื™ืกืœ ืฆื• ืึท ืจืขืงืึธืจื“ ื•ื•ืึธืก ืื™ื– ื ืึธืš ื ื™ืฉื˜ ื‘ืื’ืื ื’ืขืŸ. ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ ืึท ื•ื•ืึทืจื˜ืŸ (ื“ื™ ืึธื˜ืึทื ืึทืžืึทืก ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ื•ื•ื™ื™ืฅ ืคึฟืึทืจ ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืฆื• ื™ื‘ืขืจื’ืขื‘ืŸ ืฆื• ื–ืขืŸ ืื•ื™ื‘ ืขืก ืงืขื ืขืŸ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ื“ืึทื˜ืŸ) ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื“ื™ ื”ื•ื™ืคึผื˜ ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ื•ื•ื™ื™ืฅ ืคึฟืึทืจ ื“ื™ ืึธื˜ืึทื ืึทืžืึทืก ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืฆื• ืคืึธืจื–ืขืฆืŸ ืืจื‘ืขื˜ืŸ ื ืึธืš ื“ื™ ืฆื™ื ื’ืœ. ื ื“ืขื“ืœืึทืง ืึทืงืขืจื– ืื•ืŸ, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ืึธื˜ืึทื ืึทืžืึทืก ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืื™ื– ืงืึทื ืกืึทืœื“ ืจืขื›ื˜ ืฆื• ืกื™ื‘ื•ืช ืฉื™ื™ึทื›ื•ืช ืฆื• ืœืึทืงืก.

ื‘ืœื•ื™ื– ืจืขื’ื™ืกื˜ืจื™ืจื˜ ื ื™ืฆืขืจืก ืงืขื ืขืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ื™ ื™ื‘ืขืจื‘ืœื™ืง. ืกื™ื™ืŸ ืืจื™ื™ืŸื‘ื™ื˜ืข.

ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืฉื•ื•ืขืจ ืฆื•?

  • ื•ื•ื™ ืฆื•ื•ื™ื™ ืคื™ื ื’ืขืจ ื”ืึธื‘ ืื™ืš ื’ืœื™ื™ืš ืึทืœืฅ ืจื™ื›ื˜ื™ืง ื‘ืึทืฉืœืึธืกืŸ.

  • ื ื™ื˜ ื˜ืึทืงืข, ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ืคืึทืœืฉ ืื•ื™ืฃ ืึท ืคึผืึธืจ ืคื•ืŸ ืฉืืœื•ืช.

  • ืื™ืš ืกืึทืœื•ื•ื“ ื”ืึทืœื‘ ืคื•ืŸ ืขืก ืจื™ื›ื˜ื™ืง.

  • ืื™ืš ื’ืขืกื˜ ื“ื™ ืขื ื˜ืคืขืจ ืฆื•ื•ื™ื™ ืžืึธืœ!

  • ืื™ืš ื•ื•ืขืœ ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ

14 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 10 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’