vijay_bale Ответов: 1

Получение синтаксическая ошибка при отключении внешней Key ограничения в SQL в C#


Я создаю и обновляю две таблицы
одна таблица имеет ключ foregin с другой таблицей
при обновлении таблицы я получаю ошибку, поэтому я хочу отключить
ключ орегина во время обновления.поэтому я написал одну команду, как уже упоминалось в net. Но он показывает синтаксическую ошибку. Удар-это код.Я тоже не могу бежать

SqlCommand scmd = new SqlCommand("EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"", con);


Что я уже пробовал:

Я проверил решение, но не смог

1 Ответов

Рейтинг:
10

OriginalGriff

Ну ... двойная кавычка заканчивается строкой C#...

Поэтому вам нужно избежать его, если вы хотите передать двойную кавычку в SQL:

SqlCommand scmd = new SqlCommand("EXEC sp_MSforeachtable \"ALTER TABLE ? NOCHECK CONSTRAINT all\"", con);
Или
SqlCommand scmd = new SqlCommand(@"EXEC sp_MSforeachtable ""ALTER TABLE ? NOCHECK CONSTRAINT all""", con);
Но вы можете обнаружить, что это лучше работает с SQL:
SqlCommand scmd = new SqlCommand("EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'", con);


vijay_bale

спасибо. Это сработало. Я взял последнее, что ты сказал. Но как я включаю ограничения после обновления записи.

vijay_bale

Я дал ниже один, чтобы повторно включить constrain
Команда sqlcommand МД=новая команда sqlcommand("метод exec sp_MSforeachtable @КОМАНДА1 = 'печать' '?', @команда2 = 'Alter таблицы ? С CHECK CHECK CONSTRAINT all'", con);
МД.Метод executenonquery();

Но он дал "неправильный синтаксис рядом с'?'.

OriginalGriff

Вероятно, это знак вопроса - он не знает, над каким столом вы работаете.

Но, честно говоря, если вам нужно отключить ограничения для обновления записей, то, вероятно, что-то не так с вашими данными или вашим дизайном. Вы должны просто делать обновления в правильном порядке, а не отключать проверку.

vijay_bale

Ладно, я поищу то, что ты сказал. Но в любом случае как это сделать

vijay_bale

Могу ли я опубликовать новый вопрос для этого?