SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Trả về danh sách các khóa ngoại trong SQLite

Trong SQLite, bạn có thể sử dụng câu lệnh PRAGMA để trả về danh sách các khóa ngoại cho một bảng nhất định.

Cú pháp

Cú pháp như sau:

PRAGMA foreign_key_list(table-name);

Ở đâu table-name là tên của bảng mà bạn muốn có danh sách các khóa ngoại.

Ví dụ

Đầu tiên, hãy tạo một bảng có ràng buộc khóa ngoại.

CREATE TABLE Types( 
    TypeId INTEGER PRIMARY KEY, 
    Type
);

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);

Trong trường hợp này, tôi đã tạo hai bảng. Thú cưng bảng có ràng buộc khóa ngoại tham chiếu đến Loại bảng.

Bây giờ tôi có thể sử dụng PRAGMA foreign_key_list(table-name) câu lệnh để truy xuất khóa ngoại đó.

.mode line
PRAGMA foreign_key_list(Pets);

Kết quả (sử dụng đầu ra dọc):

      id = 0
      seq = 0
    table = Types
     from = TypeId
       to = TypeId
on_update = NO ACTION
on_delete = NO ACTION
    match = NONE

Câu lệnh PRAGMA này trả về tám cột, vì vậy tôi đã sử dụng .mode line để xuất kết quả theo chiều dọc. Điều này giúp bạn không phải cuộn sang hai bên.

Trong trường hợp này, chỉ có một ràng buộc khóa ngoại trên bảng. Nếu có nhiều hơn, chúng sẽ được liệt kê trong kết quả.

Không có khóa ngoại

Đây là điều sẽ xảy ra nếu tôi chạy cùng một câu lệnh PRAGMA trên một bảng mà không có bất kỳ khóa ngoại nào.

PRAGMA foreign_key_list(Types);

Kết quả (sử dụng đầu ra dọc):

 

(Phần này trống vì không có khóa ngoại.)

Trả về câu lệnh TẠO BẢNG

Câu lệnh sau có thể được sử dụng để trả về mã SQL thực được sử dụng để tạo mỗi bảng có khóa ngoại.

.mode column
SELECT sql 
FROM sqlite_master 
WHERE sql LIKE('%REFERENCES%');

Kết quả:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
)

Trong trường hợp này, cơ sở dữ liệu chỉ chứa một khóa ngoại (khóa mà tôi đã tạo cho ví dụ này). Nếu có nhiều hơn, CREATE TABLE tất cả các câu lệnh sẽ được liệt kê trong các kết quả này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chương trình Android để chuyển đổi cơ sở dữ liệu SQLite sang excel

  2. SQLite JSON_ARRAY_LENGTH ()

  3. Cập nhật SQLite

  4. SQLite Union

  5. android.database.sqlite.SQLiteCantOpenDatabaseException:lỗi không xác định (mã 14):Không thể mở cơ sở dữ liệu