Vaše čísla nejsou omezena. S jednocifernými (kladnými) čísly vy vědět, že zřetězená délka může být pouze tři, ale virtuální sloupec musí být dostatečně velký pro jakékoli číslo – takže to vypadá, že umožňuje až 40 číslic pro model implicitního formátu (38 platných číslic, oddělovač desetinných míst a znaménko; lexikalizace uživatele @collspar ).
Omezení sloupce s čísly by se však neprojevilo v délce virtuálního sloupce – oba sloupce by byly NUMBER(1,0)
stále ponechává zřetězení vyžadující 81 znaků. Převzetí podřetězce vygenerované hodnoty nebude také fungovat
, v tomto případě získává ORA-12899: value too large for column "TEXT" (actual: 10, maximum: 40)
. Dodání modelu formátu pro každý to_char()
zavolat, např. z FM999
), by fungovalo, ale omezuje hodnoty na obou stranách podtržítka, nikoli přímo na celkovou délku.
Pokud chcete omezit velikost sloupce, můžete jej přetypovat na stejný datový typ a velikost, což je jasnější:
text VARCHAR2(10) generated always as
(cast(to_char(id)||'_'||to_char(num) as VARCHAR2(10))) VIRTUAL