Scenariusz:
Musisz skrócić tabelę, ale gdy spróbujesz wykonać skróć tabelę nazwa_tabeli. Pojawia się błąd poniżej.Msg 4712, Level 16, State 1, Line 43
Nie można skrócić tabeli „SchemaName.TableName”, ponieważ odwołuje się do niej ograniczenie FOREIGN KEY.
Jak skróciłbyś tę tabelę?
Rozwiązanie:
Ponieważ tabela jest zaangażowana w relację klucza obcego, musisz najpierw usunąć ograniczenie klucza obcego, a następnie wykonać instrukcję truncate table.Zademonstrujmy ten przykład, zamierzam utworzyć dwie tabele dbo.Klient i dbo.Orders, a następnie utwórz ograniczenie klucza obcego w jednej z kolumn Dbo.Orders do tabeli dbo.Customer.
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)Teraz, jeśli spróbuję obciąć tabelę dbo.Orders, nie spowoduje to błędu. Ale kiedy próbuję obciąć tabelę dbo.Customer, zgłosi błąd, ponieważ dbo.Customer rozpoczyna odwołania od ograniczenia klucza obcego.
![]() |
Jak obciąć tabelę, do której odwołuje się ograniczenie klucza obcego w SQL Server |
Możemy na razie usunąć ograniczenie, obciąć tabelę, a następnie odtworzyć ograniczenie klucza obcego.
Aby znaleźć ograniczenia klucza obcego w tabeli, możesz użyć poniższej instrukcji.
SELECT * FROM sys.foreign_keys WHERE referenced_object_id = object_id('dbo.Customer')
![]() |
Jak uzyskać nazwę ograniczenia z tabel systemowych w SQL Server |
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')
![]() |
Jak usunąć ograniczenie klucza obcego do tabeli w SQL Server |
Prezentacja wideo :nie można obciąć tabeli, ponieważ odwołuje się do niej ograniczenie klucza OBCEGO