Oracle พบข้อ จำกัด


166

ผมมีข้อ จำกัด users.SYS_C00381400ที่เรียกว่า ฉันจะหาข้อ จำกัด นั้นได้อย่างไร? มีวิธีสอบถามข้อ จำกัด ทั้งหมดหรือไม่


จะรู้ข้อ จำกัด ได้อย่างไร? users.SYS_C00381400
Vinay

ชื่อข้อ จำกัด ปรากฏขึ้นในข้อความแสดงข้อผิดพลาด
David Oneill

คำตอบ:


268
select * from all_constraints
where owner = '<NAME>'
and constraint_name = 'SYS_C00381400'
/

เช่นเดียวกับมุมมองพจนานุกรมข้อมูลทั้งหมด USER_CONSTRAINTS มุมมองนี้หากคุณต้องการตรวจสอบสคีมาปัจจุบันของคุณและมุมมอง DBA_CONSTRAINTS สำหรับผู้ใช้ที่เป็นผู้ดูแลระบบ

การสร้างชื่อข้อ จำกัด บ่งชี้ว่าชื่อข้อ จำกัด ที่ระบบสร้างขึ้น ตัวอย่างเช่นถ้าเราระบุ NOT NULL ในการประกาศตาราง หรือเป็นคีย์หลักหรือคีย์เฉพาะ ตัวอย่างเช่น:

SQL> create table t23 (id number not null primary key)
  2  /

Table created.

SQL> select constraint_name, constraint_type
  2  from user_constraints
  3  where table_name = 'T23'
  4  /

CONSTRAINT_NAME                C
------------------------------ -
SYS_C00935190                  C
SYS_C00935191                  P

SQL>

'C'สำหรับการตรวจสอบ'P'สำหรับหลัก

โดยทั่วไปแล้วมันเป็นความคิดที่ดีที่จะให้ชื่อที่ชัดเจนเกี่ยวกับข้อ จำกัด ที่เกี่ยวข้อง ตัวอย่างเช่นถ้าฐานข้อมูลสร้างดัชนีสำหรับคีย์หลัก (ซึ่งจะทำถ้าคอลัมน์นั้นยังไม่ได้จัดทำดัชนี) มันจะใช้ชื่อข้อ จำกัด oo ชื่อดัชนี SYS_C00935191คุณไม่ต้องการฐานข้อมูลเต็มรูปแบบของดัชนีที่มีชื่อเหมือน

ความซื่อสัตย์คนส่วนใหญ่ไม่ได้ตั้งชื่อไม่ จำกัด NULL


25

ในการรับรายละเอียดเพิ่มเติม (ซึ่งตาราง / คอลัมน์อ้างอิงถึงตาราง / คอลัมน์ใด) คุณสามารถเรียกใช้แบบสอบถามต่อไปนี้:

SELECT   uc.constraint_name||CHR(10)
   ||      '('||ucc1.TABLE_NAME||'.'||ucc1.column_name||')' constraint_source
   ,       'REFERENCES'||CHR(10)
   ||      '('||ucc2.TABLE_NAME||'.'||ucc2.column_name||')' references_column
FROM user_constraints uc ,
  user_cons_columns ucc1 ,
  user_cons_columns ucc2
WHERE uc.constraint_name = ucc1.constraint_name
AND uc.r_constraint_name = ucc2.constraint_name
AND ucc1.POSITION        = ucc2.POSITION -- Correction for multiple column primary keys.
AND uc.constraint_type   = 'R'
AND uc.constraint_name   = 'SYS_C00381400'
ORDER BY ucc1.TABLE_NAME ,
  uc.constraint_name;

จากที่นี่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.