Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 удаление ключей и данных на ms sql 2012  [new]
MaruKa
Member

Откуда:
Сообщений: 1
Добрый день!
Огромная просьба поправить скрипт используя cascade, как удалить данные на копии БД в таблице dbo.F_ScanDoc,
не через
delete from dbo.N_DocTypes
,
если есть FK связанный с другими таблицами и ограничениями.
select name, type_desc,create_date,modify_date 
from sys.foreign_keys WHERE parent_object_id = OBJECT_ID(N'dbo.F_ScanDoc')

name type_desc create_date modify_date
FK_F_SCANDOC_N_DOCTYPES_ID FOREIGN_KEY_CONSTRAINT 2014-09-05 20:14:49.167 2015-03-02 02:51:40.993
FK_F_SCANDOC_S24 FOREIGN_KEY_CONSTRAINT 2014-09-05 20:14:49.177 2015-03-02 02:51:41.010
FK_F17_F_SCANDOC FOREIGN_KEY_CONSTRAINT 2014-09-05 20:14:49.183 2015-03-02 02:51:41.027
FK__F_SCANDOC__F2_ID__07220AB2 FOREIGN_KEY_CONSTRAINT 2014-09-05 20:14:49.190 2015-03-02 02:51:41.070
Сейчас тупо написала так
USE [temp_script]
GO
ALTER TABLE [dbo].[F_ScanDoc] DROP CONSTRAINT [FK_F_SCANDOC_S24] 
ALTER TABLE [dbo].[F_ScanDoc] DROP CONSTRAINT [FK_F_SCANDOC_N_DOCTYPES_ID] 
ALTER TABLE [dbo].[F_ScanDoc] DROP CONSTRAINT [FK_F17_F_SCANDOC] 
ALTER TABLE [dbo].[F_ScanDoc] DROP CONSTRAINT [FK__F_SCANDOC__F2_ID__07220AB2] 
ALTER TABLE [dbo].[F_SOC_REQUEST] DROP CONSTRAINT [F_SOC_REQUEST_SCAN_FACE_ID] 
ALTER TABLE [dbo].[F_SOC_REQUEST] DROP CONSTRAINT [F_SOC_REQUEST_SCAN_SIGN_ID] 
ALTER TABLE [dbo].[Tasks_Attachments] DROP CONSTRAINT [FK_Tasks_Attachments_F_SCANDOC] 
ALTER TABLE [dbo].[F10BinDocs] DROP CONSTRAINT [FK_F10BinDocs_F_SCANDOC] 
ALTER TABLE [dbo].[F_ScanDoc] DROP CONSTRAINT [PK__F_SCANDOC__02284B6B]
truncate table dbo.F_ScanDoc 
GO

Нужно что-то вроде
IF EXISTS(SELECT * FROM sys.foreign_keys WHERE parent_object_id = OBJECT_ID(N'dbo.F_ScanDoc'))
ALTER TABLE dbo.F_ScanDoc 
DELETE FOREIGN KEY PK__F_SCANDOC__02284B6B
ALTER TABLE 
ADD PK__F_SCANDOC__02284B6B NOT NULL 
FOREIGN KEY(SCANDOC)
REFERENCES dbo.F_ScanDoc (SCANDOC)
ON UPDATE RESTRICT 
ON DELETE CASCADE

Но выдает ошибку
Заранее благодарю за содействие
4 мар 15, 08:12    [17340590]     Ответить | Цитировать Сообщить модератору
 Re: удаление ключей и данных на ms sql 2012  [new]
Jaffar
Member

Откуда:
Сообщений: 633
MaruKa,

https://msdn.microsoft.com/ru-ru/library/ms189049.aspx

ALTER TABLE Sales.TempSalesReason 
ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) 
    REFERENCES Sales.SalesReason (SalesReasonID) 
    ON DELETE CASCADE
    ON UPDATE CASCADE
4 мар 15, 11:07    [17341222]     Ответить | Цитировать Сообщить модератору
 Re: удаление ключей и данных на ms sql 2012  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
Jaffar
MaruKa,

https://msdn.microsoft.com/ru-ru/library/ms189049.aspx

ALTER TABLE Sales.TempSalesReason 
ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID) 
    REFERENCES Sales.SalesReason (SalesReasonID) 
    ON DELETE CASCADE
    ON UPDATE CASCADE
ON UPDATE NO ACTION
Правда, это можно не писать - это по-умолчанию.
4 мар 15, 12:15    [17341580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить