Oracle memeriksa batasan untuk tipe varray

Saya memiliki tipe khusus yang didefinisikan sebagai ini:

CREATE TYPE myType_t AS VARRAY(2) of char(10);

Apakah mungkin untuk menambahkan batasan centang pada tipe char(10), sehingga item myType_t mematuhi regex tertentu? Saya mencoba hal-hal seperti

CREATE TYPE myType_t AS VARRAY(2) of char(10)
( constraint c_myType_format check ( regexp_like(IdontKnowWhatToWriteHere, '[:digit:]{8}'));

yang jelas tidak berfungsi... Saya pikir mungkin mendefinisikan tipe lain untuk itu

AS VARRAY(2) of myOtherType_t

tapi di sini sekali lagi saya tidak tahu di mana harus meletakkan cek regex.

Dan ya, saya juga mencoba menambahkan batasan ke tabel yang akan menggunakan tipe saya, tetapi saya tidak dapat menemukan sintaks yang benar.


person Pacane    schedule 16.10.2012    source sumber
comment
Mengapa tidak mengubah char(10) menjadi number(8)? Memang benar, hal ini tidak akan menghentikan angka negatif...   -  person Jeffrey Kemp    schedule 17.10.2012
comment
Yah, saya pikir menyimpannya sebagai angka tidak akan memiliki arti yang sama, meskipun saya tahu itu mungkin saja terjadi.   -  person Pacane    schedule 17.10.2012
comment
Cukup adil - Saya setuju jika itu sebenarnya bukan angka, tetapi serangkaian digit, sebaiknya tidak menggunakan tipe data angka. Dalam hal ini saya akan menghindari TYPE dan hanya memberi batasan pada kolom database.   -  person Jeffrey Kemp    schedule 18.10.2012


Jawaban (1)


Menurut dokumentasi Oracle:

Oracle tidak mendukung batasan pada kolom atau atribut yang tipenya adalah objek yang ditentukan pengguna, tabel bersarang, VARRAY, REF, atau LOB

person Pacane    schedule 17.10.2012