Câu trả lời:
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'TABLE_NAME'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
Đảm bảo rằng 'TABLE_NAME' là chữ hoa vì Oracle lưu trữ tên bảng bằng chữ hoa.
q
.
Giống với câu trả lời từ 'Richie' nhưng ngắn gọn hơn một chút.
Truy vấn chỉ cho các ràng buộc người dùng
SELECT column_name FROM all_cons_columns WHERE constraint_name = (
SELECT constraint_name FROM user_constraints
WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
);
Truy vấn cho tất cả các ràng buộc
SELECT column_name FROM all_cons_columns WHERE constraint_name = (
SELECT constraint_name FROM all_constraints
WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
);
user_constraints
bởi all_constraints
.
SELECT owner, column_name, position FROM all_cons_columns WHERE (owner, constraint_name) in (SELECT owner, constraint_name FROM all_constraints WHERE UPPER(table_name) = UPPER('&tableName') AND CONSTRAINT_TYPE = 'P') order by owner, position;
Select constraint_name,constraint_type from user_constraints where table_name** **= ‘TABLE_NAME’ ;
(Điều này sẽ liệt kê khóa chính và sau đó)
Select column_name,position from user_cons_cloumns where constraint_name=’PK_XYZ’;
(Điều này sẽ cung cấp cho bạn cột, ở đây PK_XYZ là tên khóa ban đầu)
Hãy thử mã này Tại đây tôi đã tạo một bảng cho cột khóa chính trong oracle được gọi là kiểm tra và sau đó truy vấn
create table test
(
id int,
name varchar2(20),
city varchar2(20),
phone int,
constraint pk_id_name_city primary key (id,name,city)
);
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner FROM all_constraints cons, all_cons_columns cols WHERE cols.table_name = 'TEST' AND cons.constraint_type = 'P' AND cons.constraint_name = cols.constraint_name AND cons.owner = cols.owner ORDER BY cols.table_name, cols.position;
Lưu tập lệnh sau dưới dạng một cái gì đó giống như findPK.sql.
set verify off
accept TABLE_NAME char prompt 'Table name>'
SELECT cols.column_name
FROM all_constraints cons NATURAL JOIN all_cons_columns cols
WHERE cons.constraint_type = 'P' AND table_name = UPPER('&TABLE_NAME');
Sau đó nó có thể được gọi bằng cách sử dụng
@findPK