በሃይሎድ++ ሳይቤሪያ 2019 — 8 Oracle ተግባራት

ሠላም!

ሰኔ 24-25 የሃይሎድ++ ሳይቤሪያ 2019 ኮንፈረንስ በኖቮሲቢርስክ ተካሂዷል። ሪፖርት አድርግ "የኦራክል ኮንቴይነሮች ዳታቤዝ (ሲዲቢ/ፒዲቢ) እና ለሶፍትዌር ልማት ተግባራዊ አጠቃቀማቸው"፣ ትንሽ ቆይተው የጽሑፍ እትም እናተምታለን። አሪፍ ነበር አመሰግናለሁ olegbunin ለድርጅቱ, እንዲሁም ለመጣው ሁሉ.

በሃይሎድ++ ሳይቤሪያ 2019 — 8 Oracle ተግባራት
በዚህ ጽሁፍ የ Oracle እውቀትን እንድትፈትሹ በዳስያችን ያጋጠሙንን ችግሮች ልናካፍላችሁ እንወዳለን። ከመቁረጥ በታች 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
  • አይ፣ ስህተት ይኖራል

ምላሽ ይስጡእንደ Oracle ሰነድ (ከ 8.1.6 የተጠቀሰው)፡-
በአንድ የSQL መግለጫ ውስጥ፣ Oracle በተከታታይ አንድ ጊዜ ብቻ ይጨምራል። መግለጫው ለተከታታይ NEXTVAL ከአንድ በላይ ማጣቀሻ ከያዘ፣ Oracle ቅደም ተከተሉን አንድ ጊዜ ይጨምራል እና ለሁሉም የNEXTVAL ክስተቶች ተመሳሳይ እሴት ይመልሳል። መግለጫው የCURRVAL እና NEXTVAL ሁለቱንም ማጣቀሻዎች ከያዘ፣ Oracle በመግለጫው ውስጥ ምንም አይነት ቅደም ተከተል ቢኖራቸውም ለሁለቱም 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

ምላሽ ይስጡእንደ Oracle ሰነድ (ከ 11.2 የተጠቀሰው)፡-

ማንኛውንም የSQL መግለጫ ከመተግበሩ በፊት፣ Oracle ስውር የማዳን ነጥብ (ለእርስዎ የማይገኝ) ምልክት ያደርጋል። ከዚያም መግለጫው ካልተሳካ፣ Oracle በራስ ሰር መልሶ ያንከባልልልናል እና የሚመለከተውን የስህተት ኮድ በSQLCA ውስጥ ወደ SQLCODE ይመልሳል። ለምሳሌ፣ INSERT መግለጫ የተባዛ እሴትን በልዩ ኢንዴክስ ውስጥ ለማስገባት በመሞከር ስህተት ከፈጠረ፣ መግለጫው ወደ ኋላ ተንከባሎ ነው።

HP ከደንበኛው መደወል እንዲሁ እንደ ነጠላ መግለጫ ተደርጎ ይቆጠራል። ስለዚህ, የመጀመሪያው የ HP ጥሪ በተሳካ ሁኔታ ይጠናቀቃል, ሶስት መዝገቦችን አስገብቷል; ሁለተኛው የ 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

ምላሽ ይስጡእንደ Oracle ሰነድ (ከ 11.2 የተጠቀሰው)፡-

የፍተሻ ገደብ በሠንጠረዡ ውስጥ ያለው እያንዳንዱ ረድፍ ማሟላት ያለበትን ሁኔታ እንዲገልጹ ያስችልዎታል። ገደቡን ለማርካት በሰንጠረዡ ውስጥ ያለው እያንዳንዱ ረድፍ ሁኔታውን እውነት ወይም የማይታወቅ (በከንቱ ምክንያት) ማድረግ አለበት። Oracle ለተወሰነ ረድፍ የቼክ ገደብ ሁኔታን ሲገመግም በሁኔታው ውስጥ ያሉ ማናቸውም የአምድ ስሞች በዚያ ረድፍ ውስጥ ያሉትን የአምድ እሴቶች ያመለክታሉ።

ስለዚህ ዋጋ ባዶው ቼኩን ያልፋል፣ እና ማንነቱ ያልታወቀ ብሎክ እሴቱን ለማስገባት እስኪሞከር ድረስ በተሳካ ሁኔታ ይፈጸማል 3. ከዚህ በኋላ የስህተት አያያዝ እገዳው ልዩነቱን ያጸዳል ፣ ምንም መመለስ አይከሰትም እና በሰንጠረዡ ውስጥ አራት ረድፎች ይቀራሉ ከዋጋዎች 1 ፣ ባዶ ፣ 2 እና ባዶ እንደገና።

በእገዳው ውስጥ ተመሳሳይ መጠን ያለው ቦታ የሚወስዱት የትኞቹ ጥንድ እሴቶች ናቸው?

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, 'Д', 'Вася');

  • A እና X
  • B እና Y
  • ሲ እና ኬ
  • C እና Z
  • K እና Z
  • እኔ እና ጄ
  • ጄ እና ኤክስ
  • ሁሉም ተዘርዝረዋል

ምላሽ ይስጡበ Oracle ውስጥ የተለያዩ አይነት መረጃዎችን ስለማከማቸት ከሰነዱ (12.1.0.2) የተቀነጨቡ ናቸው።

CHAR የውሂብ አይነት
የCHAR የውሂብ አይነት በመረጃ ቋት ቁምፊ ስብስብ ውስጥ ቋሚ ርዝመት ያለው የቁምፊ ሕብረቁምፊን ይገልጻል። የውሂብ ጎታዎን ሲፈጥሩ የውሂብ ጎታውን ቁምፊ ይጠቅሳሉ. Oracle በCHAR አምድ ውስጥ የተከማቹ ሁሉም እሴቶች በተመረጠው የርዝማኔ ትርጉም ውስጥ በመጠን የተገለጸው ርዝመት እንዳላቸው ያረጋግጣል። ከአምድ ርዝመት አጭር የሆነ እሴት ካስገቡ፣ ከዚያም Oracle ባዶ ንጣፉን ዋጋውን ወደ አምድ ርዝመት ይለውጠዋል።

VARCHAR2 የውሂብ አይነት
የVARCHAR2 የውሂብ አይነት በመረጃ ቋት ቁምፊ ስብስብ ውስጥ ተለዋዋጭ ርዝመት ያለው የቁምፊ ሕብረቁምፊን ይገልጻል። የውሂብ ጎታዎን ሲፈጥሩ የውሂብ ጎታውን ቁምፊ ይጠቅሳሉ. Oracle የቁምፊ እሴትን በ VARCHAR2 አምድ ልክ እርስዎ እንደገለፁት ያከማቻል፣ ያለ ምንም ባዶ ንጣፍ እሴቱ ከአምዱ ርዝመት በላይ ካልሆነ።

NUMBER የውሂብ አይነት
የNUMBER የውሂብ አይነት ዜሮን እንዲሁም አወንታዊ እና አሉታዊ ቋሚ ቁጥሮችን ከ1.0 x 10-130 እስከ 1.0 x 10126 ሳያካትት ፍፁም እሴቶችን ያከማቻል። እሴቱ ፍፁም የሆነ ዋጋ ያለው ወይም እኩል የሆነ የሂሳብ አገላለጽ ከገለፁ። 1.0 x 10126፣ ከዚያ Oracle ስህተት ይመልሳል። እያንዳንዱ የNUMBER እሴት ከ1 እስከ 22 ባይት ይፈልጋል። ይህንን ከግምት ውስጥ በማስገባት ለአንድ የተወሰነ የቁጥር ውሂብ እሴት NUMBER(p) በባይት ውስጥ ያለው የአምድ መጠን p የአንድ የተወሰነ እሴት ትክክለኛነት በሚከተለው ቀመር ሊሰላ ይችላል። ዙር((ርዝመት(p)+s)/2))+1 ቁጥሩ አወንታዊ ከሆነ s ከዜሮ ጋር እኩል ሲሆን ቁጥሩ አሉታዊ ከሆነ s 1 እኩል ነው።

በተጨማሪም፣ የኑል እሴቶችን ስለ ማከማቸት ከሰነዱ ቅንጭብጭብ እንውሰድ።

ባዶ ማለት በአንድ አምድ ውስጥ ያለ እሴት አለመኖር ነው። ባዶዎች የጎደለ፣ ያልታወቀ ወይም የማይተገበር ውሂብ ያመለክታሉ። Nulls የውሂብ እሴቶች ባላቸው አምዶች መካከል ከወደቁ በመረጃ ቋቱ ውስጥ ይከማቻሉ። በእነዚህ አጋጣሚዎች የአምዱን ርዝመት (ዜሮ) ለማከማቸት 1 ባይት ያስፈልጋቸዋል. አዲስ የረድፍ አርዕስት በቀደመው ረድፍ ላይ የቀሩት አምዶች ባዶ መሆናቸውን ስለሚጠቁም በተከታታይ ባዶዎችን መከተል ማከማቻ አያስፈልግም። ለምሳሌ፣ የሠንጠረዡ የመጨረሻዎቹ ሶስት ዓምዶች ዋጋ ቢስ ከሆኑ ለእነዚህ አምዶች ምንም ውሂብ አይከማችም።

በእነዚህ መረጃዎች ላይ በመመስረት, ምክንያታዊነት እንገነባለን. የመረጃ ቋቱ AL32UTF8 ኢንኮዲንግ ይጠቀማል ብለን እንገምታለን። በዚህ ኢንኮዲንግ ውስጥ የሩሲያ ፊደላት 2 ባይት ይይዛሉ።

1) A እና X፣ የመስክ ዋጋ a 'Y' 1 ባይት ይወስዳል፣ የመስክ x 'D' ዋጋ 2 ባይት ይወስዳል።
2) B እና Y፣ 'Vasya' በ b ውስጥ እሴቱ እስከ 10 ቁምፊዎች ባሉ ክፍተቶች የተሞላ እና 14 ባይት ይወስዳል፣ 'Vasya' in d 8 ባይት ይወስዳል።
3) C እና K. ሁለቱም መስኮች NULL ዋጋ አላቸው, ከነሱ በኋላ ጉልህ የሆኑ መስኮች አሉ, ስለዚህ 1 ባይት ይይዛሉ.
4) C እና Z. ሁለቱም መስኮች NULL ዋጋ አላቸው, ነገር ግን መስክ Z በሰንጠረዡ ውስጥ የመጨረሻው ነው, ስለዚህ ቦታ አይወስድም (0 ባይት). መስክ C 1 ባይት ይይዛል።
5) K እና Z. ከቀዳሚው ጉዳይ ጋር ተመሳሳይ። በኬ መስክ ውስጥ ያለው ዋጋ 1 ባይት፣ በZ – 0 ይይዛል።
6) I እና J. በሰነዱ መሠረት, ሁለቱም እሴቶች 2 ባይት ይወስዳሉ. ከሰነዶቹ የተወሰደውን ቀመር በመጠቀም ርዝመቱን እናሰላለን-ክብ ((1 + 0)/2) +1 = 1 + 1 = 2.
7) J እና X. በጄ መስክ ውስጥ ያለው ዋጋ 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);

  • ሾለ አስር
  • በመቶዎች የሚቆጠሩ
  • ሺዎች ያህል
  • በአስር ሺዎች የሚቆጠሩ

ምላሽ ይስጡእንደ Oracle ሰነድ (ከ 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

ምላሽ ይስጡእንደ Oracle ሰነድ (ከ 11.2 የተጠቀሰው)፡-

ምክንያታዊ የውሂብ ጎታ ገደቦች

ንጥል
ገደብ አይነት
እሴትን ገድብ

ማውጫዎችን።
የተጠቆመው አምድ ጠቅላላ መጠን
75% የመረጃ ቋቱ መጠን ከአንዳንድ ወጪዎች ሲቀንስ

ስለዚህ, የተጠቆሙ ዓምዶች ጠቅላላ መጠን ከ 6 ኪባ መብለጥ የለበትም. ቀጥሎ የሚሆነው በተመረጠው የመሠረት ኮድ ላይ የተመሰረተ ነው. ለ AL32UTF8 ኢንኮዲንግ፣ አንድ ቁምፊ ቢበዛ 4 ባይት ሊይዝ ይችላል፣ ስለዚህ በጣም በከፋ ሁኔታ 6 ያህል ቁምፊዎች ከ1500 ኪሎባይት ጋር ይጣጣማሉ። ስለዚህ Oracle በ N = 400 ኢንዴክስ መፍጠርን ይከለክላል (በጣም መጥፎው የጉዳይ ቁልፍ ርዝመት 1600 ቁምፊዎች * 4 ባይት + ሮድ ርዝመት ሲሆን) በ N = 200 (ወይም ከዚያ በታች) መረጃ ጠቋሚውን መፍጠር ያለችግር ይሰራል.

የ INSERT ኦፕሬተር ከAPPEND ፍንጭ ጋር በቀጥታ ሁነታ ውሂብን ለመጫን የተነደፈ ነው። ቀስቅሴው በተሰቀለበት ጠረጴዛ ላይ ቢተገበር ምን ይሆናል?

  • ውሂቡ በቀጥታ ሁነታ ይጫናል, ቀስቅሴው እንደተጠበቀው ይሰራል
  • ውሂቡ በቀጥታ ሁነታ ይጫናል, ነገር ግን ቀስቅሴው አይተገበርም
  • ውሂቡ በተለመደው ሁነታ ይጫናል, ቀስቅሴው እንደ ሁኔታው ​​ይሠራል
  • ውሂቡ በተለመደው ሁነታ ይጫናል, ነገር ግን ቀስቅሴው አይተገበርም
  • ውሂቡ አይጫንም, ስህተት ይመዘገባል

ምላሽ ይስጡበመሠረቱ, ይህ የበለጠ የሎጂክ ጥያቄ ነው. ትክክለኛውን መልስ ለማግኘት፣ የሚከተለውን የማመዛዘን ሞዴል ሀሳብ አቀርባለሁ።

  1. በቀጥታ ሁነታ ላይ ማስገባት ከፍተኛ ፍጥነትን የሚያረጋግጥ የ SQL ሞተርን በማለፍ በቀጥታ የውሂብ እገዳን በመፍጠር ይከናወናል. ስለዚህ የመቀስቀሻውን አፈፃፀም ማረጋገጥ በጣም ከባድ ነው ፣ የማይቻል ካልሆነ ፣ እና በዚህ ውስጥ ምንም ፋይዳ የለውም ፣ ምክንያቱም አሁንም ማስገባትን በእጅጉ ይቀንሳል።
  2. ቀስቅሴውን አለመፈፀም ወደ እውነታ ይመራል, በሠንጠረዡ ውስጥ ያለው መረጃ ተመሳሳይ ከሆነ, የውሂብ ጎታው ሁኔታ በአጠቃላይ (ሌሎች ሠንጠረዦች) ይህ ውሂብ በገባበት ሁነታ ላይ ይመሰረታል. ይህ በግልጽ የውሂብ ታማኝነትን ያጠፋል እና በምርት ውስጥ እንደ መፍትሄ ሊተገበር አይችልም።
  3. የተጠየቀውን ክዋኔ ማከናወን አለመቻል በአጠቃላይ እንደ ስህተት ይቆጠራል. እዚህ ግን APPEND ፍንጭ መሆኑን ማስታወስ አለብን, እና የጠቃሚ ምክሮች አመክንዮዎች ከተቻለ ግምት ውስጥ መግባታቸው ነው, ካልሆነ ግን ኦፕሬተሩ ፍንጭውን ከግምት ውስጥ ሳያስገባ ይፈጸማል.

ስለዚህ የሚጠበቀው መልስ ነው ውሂቡ በተለመደው (SQL) ሁነታ ይጫናል, ቀስቅሴው ይቃጠላል.

እንደ Oracle ሰነድ (ከ 8.04 የተጠቀሰው)፡-

የእገዳዎች መጣስ መግለጫው ያለ ማስጠንቀቂያ እና የስህተት መልእክት በተለመደው የማስገቢያ መንገድ በመጠቀም በተከታታይ እንዲተገበር ያደርገዋል። ለየት ያለ ሁኔታ በአንድ ግብይት ውስጥ ከአንድ ጊዜ በላይ ወደ ተመሳሳዩ ሠንጠረዥ የሚደርሱ መግለጫዎች ላይ ገደብ ነው, ይህም የስህተት መልዕክቶችን ሊያስከትል ይችላል.
ለምሳሌ፣ ቀስቅሴዎች ወይም የማጣቀሻ ታማኝነት በጠረጴዛው ላይ ካሉ፣ ቀጥታ ጭነት INSERT (ተከታታይ ወይም ትይዩ) ለመጠቀም ሲሞክሩ የ APPEND ፍንጭ ችላ ይባላል፣ እንዲሁም PARALLEL ፍንጭ ወይም አንቀፅ ካለ።

የሚከተለው ስክሪፕት ሲተገበር ምን ይሆናል?

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 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ