Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tidak dapat memotong tabel karena direferensikan oleh batasan KUNCI ASING - Tutorial SQL Server / TSQL Bagian 70

Skenario:

Anda perlu memotong tabel tetapi ketika Anda mencoba menjalankan nama tabel terpotong. Anda mendapatkan kesalahan di bawah ini.

Msg 4712, Level 16, State 1, Line 43
Tidak dapat memotong tabel 'SchemaName.TableName' karena direferensikan oleh batasan FOREIGN KEY.

Bagaimana Anda memotong tabel ini?

Solusi:

Sebagai tabel yang terlibat dalam hubungan Kunci Asing, Anda harus menghapus batasan kunci asing terlebih dahulu dan kemudian menjalankan pernyataan tabel truncate.

Mari kita demo contoh ini, saya akan membuat dua tabel dbo.Pelanggan dan dbo.Orders lalu buat Batasan Kunci Asing pada salah satu kolom Dbo.Orders ke tabel dbo.Pelanggan.

USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )

CREATE TABLE dbo.Orders (
    OrderId INT Identity(1, 1)
    ,OrderitemName VARCHAR(50)
    ,OrderItemAmt INT,
    CustomerId int
    )

--Create Foreign Key Constraint 
    Alter table dbo.Orders with Nocheck
    Add Constraint Fk_CustomerId  
    Foreign Key(CustomerId) References dbo.Customer(CustomerId)
 
 
 Sekarang jika saya mencoba memotong tabel dbo.Orders, itu tidak akan menimbulkan kesalahan. Tetapi ketika saya mencoba untuk memotong tabel dbo.Customer itu akan menimbulkan kesalahan karena dbo.Customer memulai referensi oleh Batasan Kunci Asing.

Cara memotong tabel yang direferensikan oleh Batasan Kunci Asing di SQL Server

Kita dapat menghilangkan batasan untuk saat ini, memotong tabel dan kemudian membuat batasan kunci Asing.

Untuk menemukan Batasan Kunci Asing pada tabel, Anda dapat menggunakan pernyataan di bawah ini.

SELECT * 
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Customer')
 
 
Cara mendapatkan nama Batasan dari tabel sistem di SQL Server
 
 Skrip di bawah ini dapat digunakan untuk membuat pernyataan Drop Constraint untuk tabel Anda

 
SELECT 
    'ALTER TABLE ' 
    +  OBJECT_SCHEMA_NAME(parent_object_id) 
    +'.[' + OBJECT_NAME(parent_object_id) 
    +'] DROP CONSTRAINT ' 
    + name as DropFKConstraint
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Customer') 
 
 
Cara menghilangkan Batasan Kunci Asing pada Tabel di SQL Server
 Ambil hasil untuk Drop Foreign Key Constraint dan jalankan, Setelah itu jalankan pernyataan truncate table Anda ke truncate table. Seharusnya selesai tanpa kesalahan.


Video Demo :Tidak dapat memotong tabel karena direferensikan oleh batasan FOREIGN KEY


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyiapkan database SQL Server lokal

  2. Bagaimana IIF() Bekerja di SQL Server

  3. Cara Mengubah Format Tanggal Saat Ini di SQL Server (T-SQL)

  4. Tidak dapat memotong tabel karena direferensikan oleh batasan KUNCI ASING - Tutorial SQL Server / TSQL Bagian 70

  5. SQL Server 2016:Memulihkan Database