Oracle ตรวจสอบข้อจำกัดสำหรับประเภท varray

ฉันมีประเภทที่กำหนดเองที่กำหนดไว้ดังนี้:

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

เป็นไปได้ไหมที่จะเพิ่มข้อจำกัดการตรวจสอบในประเภท char(10) ดังนั้นรายการ myType_t จึงเคารพ regex บางอย่าง ฉันลองสิ่งต่าง ๆ เช่น

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

ซึ่งเห็นได้ชัดว่าใช้งานไม่ได้... ฉันคิดว่าอาจจะกำหนดประเภทอื่นสำหรับ

AS VARRAY(2) of myOtherType_t

แต่ที่นี่อีกครั้งฉันไม่รู้ว่าจะใส่เช็ค regex ไว้ที่ไหน

ใช่แล้ว ฉันได้ลองเพิ่มข้อจำกัดลงในตารางที่จะใช้ประเภทของฉันด้วย แต่ฉันไม่พบไวยากรณ์ที่ถูกต้อง


person Pacane    schedule 16.10.2012    source แหล่งที่มา
comment
ทำไมไม่เปลี่ยน char(10) เป็น number(8) เป็นที่ยอมรับว่าจะไม่หยุดตัวเลขติดลบแม้ว่า...   -  person Jeffrey Kemp    schedule 17.10.2012
comment
ฉันคิดว่าการเก็บมันเป็นตัวเลขคงไม่มีความหมายเหมือนกัน แม้ว่าฉันจะรู้ว่ามันเป็นไปได้ก็ตาม   -  person Pacane    schedule 17.10.2012
comment
ยุติธรรมเพียงพอ - ฉันยอมรับว่ามันไม่ใช่ตัวเลขจริงๆ แต่เป็นสตริงของตัวเลข ทางที่ดีที่สุดคืออย่าใช้ประเภทข้อมูลตัวเลข ในกรณีนี้ ฉันจะหลีกเลี่ยงจาก TYPE และใส่ข้อจำกัดในคอลัมน์ฐานข้อมูล   -  person Jeffrey Kemp    schedule 18.10.2012


คำตอบ (1)


ตามเอกสารของ Oracle:

Oracle ไม่สนับสนุนข้อจำกัดในคอลัมน์หรือคุณลักษณะที่มีประเภทเป็นวัตถุที่ผู้ใช้กำหนด ตารางที่ซ้อนกัน VARRAY REF หรือ LOB

person Pacane    schedule 17.10.2012