Hiển thị tên của tất cả các ràng buộc cho một bảng trong Oracle SQL


115

Tôi đã xác định tên cho từng ràng buộc cho nhiều bảng mà tôi đã tạo trong Oracle SQL.

Vấn đề là để bỏ một ràng buộc cho cột của một bảng cụ thể, tôi cần biết tên mà tôi đã cung cấp cho mỗi ràng buộc, mà tôi đã quên.

Làm cách nào để liệt kê tất cả tên của các ràng buộc mà tôi đã chỉ định cho mỗi cột của bảng?

Có câu lệnh SQL nào để làm như vậy không?

Câu trả lời:


160

Bạn cần truy vấn từ điển dữ liệu , cụ thể là dạng USER_CONS_COLUMNSxem để xem các cột của bảng và các ràng buộc tương ứng:

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

FYI, trừ khi bạn tạo cụ thể bảng của mình bằng tên viết thường (sử dụng dấu ngoặc kép) thì tên bảng sẽ được đặt mặc định thành chữ hoa, vì vậy hãy đảm bảo rằng nó như vậy trong truy vấn của bạn.

Sau đó, nếu bạn muốn xem thêm thông tin về ràng buộc, hãy truy vấn USER_CONSTRAINTSchế độ xem:

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

Nếu bảng được giữ trong một lược đồ không phải là lược đồ mặc định của bạn thì bạn có thể cần phải thay thế các dạng xem bằng:

all_cons_columns

all_constraints

thêm vào mệnh đề where:

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

Đánh máy:USER_CONS_COLUMNS
Paul Draper,

3
<tên bảng của bạn> phân biệt chữ hoa chữ thường, tôi nghĩ vậy; Nó phải ở dạng chữ hoa.
Kanagavelu Sugumar

Các ownerlĩnh vực trong cả hai (người dùng | tất cả | dba) _constraints và (sử dụng | tất cả | dba) _cons_columns là chủ sở hữu của các hạn chế, không phải là chủ sở hữu của bảng (mỗi tài liệu của Oracle). Chủ sở hữu bảng không phải là trường khả dụng trong một trong hai chế độ xem này. Điều này có nghĩa là chủ sở hữu ràng buộc và chủ sở hữu bảng phải giống nhau?
David Fletcher


11

có thể điều này có thể giúp:

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

hoan hô


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

lưu ý: tên bảng phải được viết hoa.

Trong trường hợp bạn không biết tên của bảng,

select constraint_name,constraint_type,table_name 
from user_constraints;

4

Thường thì cơ sở dữ liệu doanh nghiệp có một số người dùng và tôi không đi đúng người:

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

Chọn từ tài liệu Oracle


0

Sử dụng một trong hai lệnh dưới đây. Mọi thứ phải được viết hoa. Tên bảng phải được đặt trong dấu ngoặc kép:

--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';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.