Parametry
name | jmΘno pro novou tabulku |
description | popis struktury a index∙ tabulky |
Popis
Funkce je od verze 5.0 zastaralß a nedoporuΦuje se jφ pou₧φvat. Tabulku lze nynφ vytvo°it p°φm²m zavolßnφm SQL p°φkazu CREATE TABLE
. Funkce Define_table
existuje z d∙vod∙ zp∞tnΘ kompatibility.
Funkce Define_table
vytvß°φ novou prßzdnou tabulku se jmΘnem name. Tabulka stejnΘho jmΘna nesmφ ji₧ v aktußlnφ aplikaci existovat.
Popis struktury tabulky description musφ p°esn∞ dodr₧et nφ₧e popsanou syntaxi, jinak tabulka nebude vytvo°ena.
Popis m∙₧e zaΦφnat voliteln²m slovem NO_JOURNAL. Dßle nßsleduje po °ad∞ 1 a₧ 254 popis∙ sloupc∙, 0 a₧ 24 popis∙ index∙ a ukonΦujφcφ slovo END. Slovo NO_JOURNAL vyjad°uje po₧adavek, aby se zm∞ny v tabulce nezaznamenßvaly do journalu (pokud se journal vede).
Popis ka₧dΘho sloupce vypadß takto:
ATTRIBUTE jmΘno typ[parametr] PREALLOC=nn EXPANDABLE
p°iΦem₧:
jmΘno - je jmΘno sloupce, tedy identifikßtor o dΘlce max. 31 znak;
typ - je typ sloupce;
parametr - a hranatΘ zßvorky okolo n∞j se uvßd∞jφ pouze u typu String (v zßvorkßch je pak dΘlka °et∞zce) a u typ∙ Pointer a Biptr (v zßvorkßch je jmΘno cφlovΘ tabulky);
PREALLOC=nn - se uvßdφ pouze u multiatribut∙, nn je poΦet hodnot multiatributu, pro n∞₧ je staticky rezervovßno mφsto, nn musφ b²t mezi 0 a 127;
EXPANDABLE - lze uvΘst pouze u multiatribut∙ a specifikuje, ₧e multiatribut smφ mφt i dalÜφ hodnoty, pro n∞₧ nenφ staticky rezervovßno mφsto.
Popis ka₧dΘho indexu vypadß takto:
INDEX [!] v²raz
sm∞r
, ... v²raz
sm∞r
p°iΦem₧:
! - je-li uveden, index se vytvo°φ jako jedineΦn²;
v²raz
- v²raz definujφcφ obecn² index, m∙₧e obsahovat a₧ 8 atribut∙; za jmΘnem sloupce typu °et∞zec znak∙ smφ b²t v hranat²ch zßvorkßch uvedeno, kolik znak∙ ze zaΦßtku °et∞zce se mß zahrnout do klφΦe;
sm∞r -
m∙₧e b²t ASC pro vzestupn∞ uspo°ßdanΘ indexy nebo DESC pro sestupn∞ uspo°ßdanΘ indexy, pokud se neuvede, mφnφ se vzestupnΘ uspo°ßdßnφ.
P°i vytvß°enφ tabulky lze specifikovat, ₧e zm∞ny v tΘto tabulce se nemajφ zaznamenßvat do journalu. Na zaΦßtek definice takovΘto tabulky umφstφte slovo NO_JOURNAL. V nßvrhß°i tabulek tuto vlastnost zadat nelze.
P°φklad:
Define_table("NOV┴", "NO_JOURNAL ATTRIBUTE a INDEX a END");
Hodnota funkce
Funkce vracφ FALSE, pokud tabulku vytvo°φ, nebo TRUE, pokud tabulku nem∙₧e vytvo°it (obvykle kv∙li chybnΘmu popisu struktury, nebo pokud tabulka tohoto jmΘna ji₧ existuje).
P°φklad
star² a nov² zp∙sob definice tabulky:
result := Define_table('NovaTab',
'attribute i short '
'attribute j short '
'attribute n csstring[30] '
'attribute r real prealloc=5 expandable '
'attribute t text '
'attribute p pointer[StaraTab] '
'index n[10], i '
'index i+j desc end');
SQL_execute('CREATE TABLE NovaTab ('
'i INTEGER INDEX,'
'j INTEGER,'
'n CHAR(30) COLLATE CSSISTRING,'
'r REAL PREALLOC=5 EXPANDABLE,'
't TEXT LONG VARCHAR,'
'p POINTER [StaraTab],'
'INDEX (n[10]),'
'INDEX (i+j DESC))')
Viz