sp_fkeys (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse di Microsoft Fabric

Mengembalikan informasi kunci asing logis untuk lingkungan saat ini. Prosedur ini menunjukkan hubungan kunci asing termasuk kunci asing yang dinonaktifkan.

Konvensi sintaks transact-SQL

Sintaks

sp_fkeys [ @pktable_name = ] 'pktable_name'   
     [ , [ @pktable_owner = ] 'pktable_owner' ]   
     [ , [ @pktable_qualifier = ] 'pktable_qualifier' ]   
     { , [ @fktable_name = ] 'fktable_name' }   
     [ , [ @fktable_owner = ] 'fktable_owner' ]   
     [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]  

Argumen

[ @pktable_name=] 'pktable_name'
Adalah nama tabel, dengan kunci utama, digunakan untuk mengembalikan informasi katalog. pktable_name adalah sysname, dengan default NULL. Pencocokan pola kartubebas tidak didukung. Parameter ini atau parameter fktable_name , atau keduanya, harus disediakan.

[ @pktable_owner=] 'pktable_owner'
Adalah nama pemilik tabel (dengan kunci utama) yang digunakan untuk mengembalikan informasi katalog. pktable_owner adalah sysname, dengan default NULL. Pencocokan pola kartubebas tidak didukung. Jika pktable_owner tidak ditentukan, aturan visibilitas tabel default dari DBMS yang mendasar berlaku.

Di SQL Server, jika pengguna saat ini memiliki tabel dengan nama yang ditentukan, kolom tabel tersebut dikembalikan. Jika pktable_owner tidak ditentukan dan pengguna saat ini tidak memiliki tabel dengan pktable_name yang ditentukan, prosedur mencari tabel dengan pktable_name yang ditentukan yang dimiliki oleh pemilik database. Jika ada, kolom tabel tersebut dikembalikan.

[ @pktable_qualifier =] 'pktable_qualifier'
Adalah nama kualifikasi tabel (dengan kunci primer). pktable_qualifier adalah sysname, dengan default NULL. Berbagai produk DBMS mendukung penamaan tiga bagian untuk tabel (qualifier.owner.name). Di SQL Server, kualifikasi mewakili nama database. Dalam beberapa produk, ini mewakili nama server lingkungan database tabel.

[ @fktable_name=] 'fktable_name'
Adalah nama tabel (dengan kunci asing) yang digunakan untuk mengembalikan informasi katalog. fktable_name adalah sysname, dengan default NULL. Pencocokan pola kartubebas tidak didukung. Parameter ini atau parameter pktable_name , atau keduanya, harus disediakan.

[ @fktable_owner =] 'fktable_owner'
Adalah nama pemilik tabel (dengan kunci asing) yang digunakan untuk mengembalikan informasi katalog. fktable_owner adalah sysname, dengan default NULL. Pencocokan pola kartubebas tidak didukung. Jika fktable_owner tidak ditentukan, aturan visibilitas tabel default dari DBMS yang mendasar berlaku.

Di SQL Server, jika pengguna saat ini memiliki tabel dengan nama yang ditentukan, kolom tabel tersebut dikembalikan. Jika fktable_owner tidak ditentukan dan pengguna saat ini tidak memiliki tabel dengan fktable_name yang ditentukan, prosedur mencari tabel dengan fktable_name yang ditentukan oleh pemilik database. Jika ada, kolom tabel tersebut dikembalikan.

[ @fktable_qualifier= ] 'fktable_qualifier'
Adalah nama kualifikasi tabel (dengan kunci asing). fktable_qualifier adalah sysname, dengan default NULL. Di SQL Server, kualifikasi mewakili nama database. Dalam beberapa produk, ini mewakili nama server lingkungan database tabel.

Mengembalikan Nilai Kode

Tidak ada

Tataan Hasil

Nama kolom Jenis data Deskripsi
PKTABLE_QUALIFIER nama sysname Nama kualifikasi tabel (dengan kunci primer). Bidang ini bisa NULL.
PKTABLE_OWNER nama sysname Nama tabel (dengan kunci primer) pemilik. Bidang ini selalu mengembalikan nilai.
PKTABLE_NAME nama sysname Nama tabel (dengan kunci primer). Bidang ini selalu mengembalikan nilai.
PKCOLUMN_NAME nama sysname Nama kolom kunci utama, untuk setiap kolom TABLE_NAME yang dikembalikan. Bidang ini selalu mengembalikan nilai.
FKTABLE_QUALIFIER nama sysname Nama kualifikasi tabel (dengan kunci asing). Bidang ini bisa NULL.
FKTABLE_OWNER nama sysname Nama tabel (dengan kunci asing) pemilik. Bidang ini selalu mengembalikan nilai.
FKTABLE_NAME nama sysname Nama tabel (dengan kunci asing). Bidang ini selalu mengembalikan nilai.
FKCOLUMN_NAME nama sysname Nama kolom kunci asing, untuk setiap kolom TABLE_NAME dikembalikan. Bidang ini selalu mengembalikan nilai.
KEY_SEQ smallint Nomor urut kolom dalam kunci primer multikolom. Bidang ini selalu mengembalikan nilai.
UPDATE_RULE smallint Tindakan yang diterapkan ke kunci asing ketika operasi SQL adalah pembaruan. Nilai yang mungkin:
0=CASCADE berubah menjadi kunci asing.
1=TIDAK ADA PERUBAHAN TINDAKAN jika ada kunci asing.
2 = atur null
3 = atur default
DELETE_RULE smallint Tindakan yang diterapkan ke kunci asing ketika operasi SQL adalah penghapusan. Nilai yang mungkin:
0=CASCADE berubah menjadi kunci asing.
1=TIDAK ADA PERUBAHAN TINDAKAN jika ada kunci asing.
2 = atur null
3 = atur default
FK_NAME nama sysname Pengidentifikasi kunci asing. Ini adalah NULL jika tidak berlaku untuk sumber data. SQL Server mengembalikan nama batasan KUNCI ASING.
PK_NAME nama sysname Pengidentifikasi kunci utama. Ini adalah NULL jika tidak berlaku untuk sumber data. SQL Server mengembalikan nama batasan KUNCI PRIMER.

Hasil yang dikembalikan diurutkan berdasarkan FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME, dan KEY_SEQ.

Keterangan

Pengkodian aplikasi yang menyertakan tabel dengan kunci asing yang dinonaktifkan dapat diimplementasikan dengan cara berikut:

  • Menonaktifkan sementara pemeriksaan batasan (ALTER TABLE NOCHECK atau CREATE TABLE NOT FOR REPLICATION) saat bekerja dengan tabel, lalu mengaktifkannya lagi nanti.

  • Menggunakan pemicu atau kode aplikasi untuk menegakkan hubungan.

Jika nama tabel kunci utama disediakan dan nama tabel kunci asing adalah NULL, sp_fkeys mengembalikan semua tabel yang menyertakan kunci asing ke tabel yang diberikan. Jika nama tabel kunci asing disediakan dan nama tabel kunci utama adalah NULL, sp_fkeys mengembalikan semua tabel yang terkait dengan kunci primer/hubungan kunci asing dengan kunci asing dalam tabel kunci asing.

Prosedur tersimpan sp_fkeys setara dengan SQLForeignKeys di ODBC.

Izin

SELECT Memerlukan izin pada skema.

Contoh

Contoh berikut mengambil daftar kunci asing untuk HumanResources.Department tabel dalam AdventureWorks2022 database.

USE AdventureWorks2022;  
GO  
EXEC sp_fkeys @pktable_name = N'Department'  
    ,@pktable_owner = N'HumanResources';  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

Contoh berikut mengambil daftar kunci asing untuk DimDate tabel dalam AdventureWorksPDW2012 database. Tidak ada baris yang dikembalikan karena Azure Synapse Analytics tidak mendukung kunci asing.

EXEC sp_fkeys @pktable_name = N'DimDate';  

Lihat Juga

Prosedur Tersimpan Katalog (Transact-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)
sp_pkeys (T-SQL)