ความยาวสูงสุดของชื่อตารางและชื่อคอลัมน์ใน Oracle คืออะไร
ความยาวสูงสุดของชื่อตารางและชื่อคอลัมน์ใน Oracle คืออะไร
คำตอบ:
ในOracle 12.2และสูงกว่าความยาวชื่อวัตถุสูงสุดคือ 128 ไบต์
ในOracle 12.1และต่ำกว่าความยาวชื่อวัตถุสูงสุดคือ 30 ไบต์
สังเกตขนาดและชนิดข้อมูล
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
describe user_mview_logs
จะกลับมาLOG_TABLE VARCHAR2(128)
แต่ถ้าคุณลองอะไรก็ตามที่มีความยาว 30 ตัวอักษรขึ้นไปสำหรับชื่อไฟล์บันทึกการดูที่ปรากฏขึ้นคุณจะได้ผลลัพธ์ที่น่าสงสัย
DESCRIBE all_tab_columns
จะแสดง TABLE_NAME VARCHAR2 (30)
หมายเหตุ VARCHAR2 (30) หมายถึงการ จำกัด 30 ไบต์ไม่จำกัดความยาว 30 อักขระและอาจแตกต่างกันหากฐานข้อมูลของคุณถูกกำหนดค่า / ตั้งค่าให้ใช้ชุดอักขระแบบมัลติไบต์
ไมค์
ถูกต้อง แต่ตราบใดที่คุณใช้อักขระ ASCII แม้ชุดอักขระแบบมัลติไบต์จะยังคงมีข้อ จำกัด อยู่ที่ 30 อักขระ ... ดังนั้นหากคุณไม่ต้องการใส่หัวใจและแมวยิ้มในฐานข้อมูลของคุณ ...
30 อักขระ (ไบต์ตามที่ระบุ)
แต่อย่าเชื่อใจฉัน ลองด้วยตัวคุณเอง:
SQL> create table I23456789012345678901234567890 (my_id number);
Table created.
SQL> create table I234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
อัปเดต: ตามที่ระบุข้างต้นใน Oracle 12.2 และใหม่กว่าความยาวชื่อวัตถุสูงสุดคือ 128 ไบต์
กฎการตั้งชื่อวัตถุสกีมาอาจมีการใช้งานบางอย่าง:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
ในฐานข้อมูล 10g ที่ฉันจัดการฉันรู้ว่าชื่อตารางมีขนาดสูงสุดที่ 30 อักขระ ไม่สามารถบอกคุณได้ว่าความยาวชื่อคอลัมน์คืออะไร (แต่ฉันรู้ว่ามันคือ> 30)
ขนาดชื่อสูงสุดคือ 30 ตัวอักษรเนื่องจากพจนานุกรมข้อมูลซึ่งอนุญาตให้เก็บข้อมูลได้เพียง 30 ไบต์เท่านั้น
บนOracle 12.2
คุณสามารถใช้ค่าคงที่ในตัวORA_MAX_NAME_LEN
ตั้งค่าเป็น 128 ไบต์ (ตาม 12.2) ก่อนOracle 12.1
ขนาดสูงสุดคือ 30 ไบต์
ออราเคิลยาวชื่อวัตถุฐานข้อมูลได้สูงสุด30 ไบต์
กฎชื่อวัตถุ: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
ฉันกำลังทำงานกับ Oracle 12c 12.1 อย่างไรก็ตามดูเหมือนจะไม่อนุญาตให้ใช้ชื่อคอลัมน์ / ตารางมากกว่า 30 ตัว
อ่านหน้า oracle ที่กล่าวถึง 30 ไบต์ https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
ใน 12c แม้ว่า all_tab_columns จะบอกว่า VARCHAR2 (128) สำหรับ Table_Name แต่จะไม่อนุญาตให้มีชื่อเกิน 30 ไบต์
พบบทความอื่นเกี่ยวกับ 12c R2 ซึ่งดูเหมือนว่าจะอนุญาตให้ใช้ตัวอักขระสูงสุด 128 ตัว https://community.oracle.com/ideas/3338
ความยาวสูงสุดของชื่อตารางและคอลัมน์คือ 128 ไบต์หรือ 128 อักขระ ขีด จำกัด นี้ใช้สำหรับผู้ใช้ฐานข้อมูล sybase ฉันตรวจสอบคำตอบนี้อย่างละเอียดเพื่อที่ฉันจะได้โพสต์คำตอบนี้อย่างมั่นใจ