ฉันมีฐานข้อมูลที่มีข้อ จำกัด NOT NULL บนฟิลด์และฉันต้องการลบข้อ จำกัด นี้ ปัจจัยที่ซับซ้อนคือข้อ จำกัด นี้มีชื่อที่กำหนดโดยระบบและชื่อของข้อ จำกัด นั้นแตกต่างกันระหว่างเซิร์ฟเวอร์ที่ใช้งานจริงเซิร์ฟเวอร์รวมและฐานข้อมูลของผู้พัฒนาต่างๆ กระบวนการปัจจุบันของเราคือการตรวจสอบสคริปต์การเปลี่ยนแปลงและงานอัตโนมัติจะดำเนินการค้นหาที่เหมาะสมผ่าน sqlplus กับฐานข้อมูลเป้าหมายดังนั้นฉันต้องการโซลูชันที่สามารถส่งตรงไปยัง sqlplus ได้โดยตรง
ในฐานข้อมูลของฉันเอง SQL ที่จะวางสิ่งนี้จะเป็น:
alter table MYTABLE drop constraint SYS_C0044566
ฉันสามารถเห็นข้อ จำกัด เมื่อฉันสอบถามall_constraints
มุมมอง:
select * from all_constraints where table_name = 'MYTABLE'
แต่ผมไม่แน่ใจว่าวิธีการทำงานร่วมกับSEARCH_CONDITION
's LONG
ชนิดข้อมูลหรือวิธีการที่ดีที่สุดในการลบแบบไดนามิก จำกัด มองขึ้นแม้หลังจากที่ฉันรู้ว่าชื่อของมัน
ดังนั้นฉันจะสร้างสคริปต์การเปลี่ยนแปลงที่สามารถยกเลิกข้อ จำกัด นี้ตามสิ่งที่เป็นอยู่แทนที่จะเป็นชื่อของมันได้อย่างไร
แก้ไข: คำตอบของ @ Allan เป็นคำตอบที่ดี แต่ฉันกังวล (เนื่องจากฉันไม่มีความเชี่ยวชาญด้าน Oracle) ว่าอาจไม่เป็นความจริงในระดับสากลที่ข้อ จำกัด ใด ๆ ที่อาจมีชื่อที่ระบบสร้างขึ้นจะเกี่ยวข้องกับวิธีการลบ ข้อ จำกัด โดยไม่ต้องรู้ชื่อ เป็นความจริงหรือไม่ที่จะมีวิธีหลีกเลี่ยงไม่ให้ต้องรู้ชื่อข้อ จำกัด ที่ตั้งชื่อระบบเมื่อทิ้งข้อ จำกัด นั้นอย่างมีเหตุผล?