2015-07-01 3 views
-2

Я хотел бы временно (только для инструкции t-sql) отключить проверку ограничений. Мое утверждение:T-SQL INSERT INTO Отключение проверки ограничений

insert into branchOffice(
branchOfficeTypeId, 
labirintoClientiId, 
companyId, 
signboardName, 
address, 
addressNumber, 
zipCode, 
city, 
province, 
officePhoneNumber, 
officeFaxNumber, 
officeEmail, 
statusId, 
officeNotes, 
squareMeters, 
familyHelpersCount, 
employeesCount, 
workingCompanyPartnerCount) 

SELECT 
    1, 
    [NewBiz.Labirinto].dbo.Clienti.id, 
    1, 
    [NewBiz.Labirinto].dbo.clienti.Insegna, 
     case 
     when PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)>0 then LEFT([NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo, PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)-1) 
     when PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)=0 then [NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo 
     end as indirizzo, 
     case 
     when PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)>0 then right([NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo,len([NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)-PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)+1) 
     when PATINDEX('%[0-9]%',[NewBiz.Labirinto].dbo.clienti.SedeLegaleIndirizzo)=0 then '' 
     end as numero, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleCAP, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleComune, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleProvincia, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleTelefono, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleFax, 
    [NewBiz.Labirinto].dbo.clienti.SedeLegaleEMail, 
    [NewBiz.Labirinto].dbo.clienti.SituazioneId, 
    [NewBiz.Labirinto].dbo.clienti.Note, 
    [NewBiz.Labirinto].dbo.clienti.Superficie, 
    [NewBiz.Labirinto].dbo.clienti.Coadiuvanti, 
    [NewBiz.Labirinto].dbo.clienti.Dipendenti, 
    [NewBiz.Labirinto].dbo.clienti.SociLavoratori 
    from [NewBiz.Labirinto].dbo.Clienti 
    where [NewBiz.Labirinto].dbo.Clienti.AziendaId=1 
+0

Http: // StackOverflow. com/questions/737115/turn-off-constraints-temporarily-ms-sql – Mihai

+3

Представьте себе, что мы не имеем доступа к * вашей * базе данных. Мы не знаем, какие ограничения существуют на этой таблице, и какие * из них вы хотите отключить. Кроме того, вы не можете отключать ограничения в SQL Server только для одного оператора - вы должны отключить их для всех пользователей. –

ответ

1

Constraint на столе не один оператор
Вид некрасивым, но
Положите его в сделке и принимать TABLOCK

begin transaction 
    ALTER TABLE branchOffice NOCHECK CONSTRAINT ALL 
    insert into branchOffice with (tablock) 
    -- Re-enable the constraints on a table 
    ALTER TABLE branchOffice WITH CHECK CHECK CONSTRAINT ALL 
commit transation; 
+0

hmm ... все еще давая мне проблемы с ограничениями –

+0

hmm ... не может помочь вам, если у вас не возникнут конкретные проблемы – Paparazzi

+0

Msg 547, уровень 16, состояние 0, строка 6 Операция DELETE противоречила ограничению REFERENCE " FK_branchOffice_businessType_branchOffice». Конфликт произошел в базе данных «NuLabs», таблице «dbo.branchOffice_businessType», в столбце «branchOfficeId». Заявление имеет ... Проверка идентификационной информации: текущее значение идентификатора '2'. DBCC исполнение завершено. Если DBCC печатал сообщения об ошибках, обратитесь к системному администратору. Msg 2627, Level 14, State 1, Line 10 Нарушение ограничения PRIMARY KEY 'PK_Table1'. Невозможно вставить дубликат ключа в объект «dbo.branchOffice». Значение дублирующегося ключа равно (1). –