NOCHECK не отключает ссылки на внешние ключи
Скрипт создания таблицы:
CREATE TABLE [dbo].[details](
[id] [int] NULL,
[details] [varchar](max) NULL
)
CREATE TABLE [dbo].[name](
[id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[name] [varchar](max) NULL,
CONSTRAINT [PK__name__3213E83F0D384EE4] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ALTER TABLE [dbo].[details] WITH NOCHECK ADD CONSTRAINT [id] FOREIGN KEY([id])
REFERENCES [dbo].[name] ([id])
GO
ALTER TABLE [dbo].[details] NOCHECK CONSTRAINT [id]
GO
Скрипт заполнения таблицы
insert into name(name) values (newid())
go 100
insert into details (id,details) values(RAND()*10,newid())
Go 1000
Скрипт усечения таблицы
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
EXEC sp_msforeachtable "truncate table ?"
EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Взято изКак можно временно отключить ограничения внешнего ключа с помощью T-SQL?
Также попробовал
alter table name nocheck constraint all
truncate table name
Оба случая нея не могу усечь таблицу, так как есть ссылка на внешний ключ
Сообщение об ошибке:
Невозможно усечь таблицу 'dbo.name» потому что на него ссылается ограничение FOREIGN KEY.
Есть ли способ отключить ограничения FK, удалить все данные в базе данных и повторно инициализировать удостоверения, а затем повторно включить ограничения FK?