--- Блок действий по переделке Справочника_неисправностей
alter table Справочник_возможных_причин_неисправностей ADD Описание nvarchar(200) NULL
exec('update Справочник_возможных_причин_неисправностей set Справочник_возможных_причин_неисправностей.Описание = (select Описание from Справочник_причин_неисправностей Спр where Спр.Код_типа_причины = Справочник_возможных_причин_неисправностей.Код_типа_причины)')
alter table Справочник_возможных_причин_неисправностей alter column Описание nvarchar(200) NOT NULL
GO
-- удаляем старые ключи
declare @table_name nvarchar(50)
declare @strSQL nvarchar(1024)

set @table_name=N'Справочник_возможных_причин_неисправностей'
set @strSQL=''
select @strSQL = @strSQL + ' ALTER TABLE ' + @table_name + ' DROP CONSTRAINT '+ object_name(FK_Tab.id) 
from sysobjects FK_Tab 
where xtype = 'F' AND object_id(@table_name)=parent_obj 

if @strSQL<>''  exec (@strSQL)
GO

ALTER TABLE Справочник_возможных_причин_неисправностей WITH NOCHECK
       ADD FOREIGN KEY (Код_типа_неисправности)
                              REFERENCES Справочник_типов_неисправностей
                              ON DELETE CASCADE

alter table Причина_неисправности add Код_типа_неисправности int NULL
exec('update Причина_неисправности set Код_типа_неисправности = (select Код_типа_неисправности from Неисправность where Код_неисправности = .Причина_неисправности.Код_неисправности)')
alter table Причина_неисправности alter column Код_типа_неисправности int NOT NULL
GO
-- удаляем старые ключи
declare @table_name nvarchar(50)
declare @strSQL nvarchar(1024)

set @table_name=N'Причина_неисправности'
set @strSQL=''
select @strSQL = @strSQL + ' ALTER TABLE ' + @table_name + ' DROP CONSTRAINT '+ object_name(FK_Tab.id) 
from sysobjects FK_Tab 
where (xtype = 'F' or xtype = 'pk') AND object_id(@table_name)=parent_obj 

if @strSQL<>''  exec (@strSQL)
GO

alter table Причина_неисправности add PRIMARY KEY (Код_типа_причины, Код_неисправности, Код_типа_неисправности)
GO
 
drop table Справочник_причин_неисправностей
EXEC sp_rename 'Справочник_возможных_причин_неисправностей', 'Справочник_причин_неисправностей' 
GO

ALTER TABLE Причина_неисправности WITH NOCHECK
      ADD FOREIGN KEY (Код_неисправности)
                              REFERENCES Неисправность
                              ON DELETE CASCADE

ALTER TABLE Причина_неисправности
      ADD FOREIGN KEY (Код_типа_неисправности, Код_типа_причины)
                              REFERENCES Справочник_причин_неисправностей
GO
