sp_fkeys (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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.
Sintaks
sp_fkeys
[ [ @pktable_name = ] N'pktable_name' ]
[ , [ @pktable_owner = ] N'pktable_owner' ]
[ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
[ , [ @fktable_name = ] N'fktable_name' ]
[ , [ @fktable_owner = ] N'fktable_owner' ]
[ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]
Argumen
[ @pktable_name = ] N'pktable_name'
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 = ] N'pktable_owner'
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 sistem manajemen database (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 = ] N'pktable_qualifier'
Nama tabel (dengan kunci primer) kualifikasi. @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 = ] N'fktable_name'
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 = ] N'fktable_owner'
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 = ] N'fktable_qualifier'
Nama tabel (dengan kunci asing) kualifikasi. @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 berupa 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 yang TABLE_NAME dikembalikan. Bidang ini selalu mengembalikan nilai. |
FKTABLE_QUALIFIER |
nama sysname | Nama kualifikasi tabel (dengan kunci asing). Bidang ini bisa berupa 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 yang 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 perubahan pada kunci asing.1 = NO ACTION berubah jika ada kunci asing.2 = SET_NULL 3 = atur default |
DELETE_RULE |
smallint | Tindakan yang diterapkan ke kunci asing ketika operasi SQL adalah penghapusan. Nilai yang mungkin:0 = CASCADE perubahan pada kunci asing.1 = NO ACTION berubah jika ada kunci asing.2 = SET_NULL 3 = atur default |
FK_NAME |
nama sysname | Pengidentifikasi kunci asing. Ini NULL jika tidak berlaku untuk sumber data. SQL Server mengembalikan FOREIGN KEY nama batasan. |
PK_NAME |
nama sysname | Pengidentifikasi kunci utama. Ini NULL jika tidak berlaku untuk sumber data. SQL Server mengembalikan PRIMARY KEY nama batasan. |
Hasil yang dikembalikan diurutkan oleh FKTABLE_QUALIFIER
, , FKTABLE_NAME
FKTABLE_OWNER
, dan KEY_SEQ
.
Keterangan
Pengodean aplikasi yang mencakup tabel dengan kunci asing yang dinonaktifkan dapat diimplementasikan dengan metode berikut:
Nonaktifkan pemeriksaan batasan (
ALTER TABLE NOCHECK
atauCREATE TABLE NOT FOR REPLICATION
) untuk sementara waktu saat bekerja dengan tabel, lalu aktifkan 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 sp_fkeys
tersimpan 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';