Menampilkan nama semua batasan untuk tabel di Oracle SQL


115

Saya telah menetapkan nama untuk masing-masing batasan untuk beberapa tabel yang telah saya buat di Oracle SQL.

Masalahnya adalah untuk menghilangkan batasan untuk kolom tabel tertentu, saya perlu mengetahui nama yang telah saya berikan untuk setiap batasan, yang telah saya lupakan.

Bagaimana cara mendaftar semua nama kendala yang telah saya tentukan untuk setiap kolom tabel?

Apakah ada pernyataan SQL untuk melakukannya?

Jawaban:


160

Anda perlu membuat kueri kamus data , khususnya USER_CONS_COLUMNStampilan untuk melihat kolom tabel dan batasan yang sesuai:

SELECT *
  FROM user_cons_columns
 WHERE table_name = '<your table name>';

FYI, kecuali Anda secara khusus membuat tabel Anda dengan nama huruf kecil (menggunakan tanda kutip ganda) maka nama tabel akan default ke huruf besar jadi pastikan itu ada dalam kueri Anda.

Jika Anda kemudian ingin melihat informasi lebih lanjut tentang kendala itu sendiri, USER_CONSTRAINTStampilan:

SELECT *
  FROM user_constraints
 WHERE table_name = '<your table name>'
   AND constraint_name = '<your constraint name>';

Jika tabel diadakan dalam skema yang bukan skema default Anda, maka Anda mungkin perlu mengganti tampilan dengan:

all_cons_columns

dan

all_constraints

menambahkan ke klausa where:

   AND owner = '<schema owner of the table>'

Salah ketik:USER_CONS_COLUMNS
Paul Draper

3
<nama tabel Anda> peka huruf besar / kecil, saya rasa; Ini harus dalam huruf besar.
Kanagavelu Sugumar

The ownerlapangan di kedua (user | semua | dba) _constraints dan (user | semua | dba) _cons_columns adalah pemilik kendala, bukan pemilik meja (per dokumentasi Oracle). Pemilik tabel bukan bidang yang tersedia di salah satu tampilan ini. Apakah ini berarti pemilik batasan dan pemilik tabel harus sama?
David Fletcher


11

mungkin ini bisa membantu:

SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";

Bersulang


8
select constraint_name,constraint_type 
from user_constraints
where table_name = 'YOUR TABLE NAME';

catatan: nama tabel harus menggunakan huruf kapital.

Jika Anda tidak tahu nama tabelnya,

select constraint_name,constraint_type,table_name 
from user_constraints;

4

Seringkali database perusahaan memiliki beberapa pengguna dan saya bukan pengguna yang tepat:

SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;

Dipilih dari dokumentasi Oracle


0

Gunakan salah satu dari dua perintah di bawah ini. Semuanya harus dalam huruf besar. Nama tabel harus dibungkus dengan tanda kutip:

--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';

--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.