Bagikan melalui


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.

Konvensi sintaks transact-SQL

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_NAMEFKTABLE_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 atau CREATE 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';