2016-05-04 2 views
-1

Это запрос, который выполняется на C#. п получение выше ошибкиБаза данных доступа, запрос Sql, Ошибка «Синтаксическая ошибка в DROP TABLE или DROP INDEX.»

"DROP TABLE IF EXISTS `NATIONAL_ID_ISSUANCE_CENTER`; 
CREATE TABLE `NATIONAL_ID_ISSUANCE_CENTER` (
    `ID` INTEGER NOT NULL AUTO_INCREMENT, 
    `NAME` VARCHAR(100), 
    `APPLICATION_ID` INTEGER, 
    `STATUS` INTEGER, 
    `CREATED_BY` INTEGER, 
    `UPDATED_BY` INTEGER, 
    `CREATED_DATE` DATETIME, 
    `UPDATED_DATE` DATETIME, 
    `THIRD_PARTY_ID` INTEGER, 
    `PROVINCE_ID` INTEGER, 
    INDEX (`APPLICATION_ID`), 
    PRIMARY KEY (`ID`), 
    INDEX (`PROVINCE_ID`), 
    INDEX (`THIRD_PARTY_ID`) 
)" 
+0

Я подозреваю, что ваш вопрос был отклонен, потому что он показывает отсутствие исследовательских усилий. Какие шаги вы предприняли для отладки этой ошибки? Могли ли вы выяснить, какое утверждение вызывает ошибку? Ниже приведены документы Microsoft на странице [DROP] (https://msdn.microsoft.com/en-GB/library/ms173790.aspx) и [CREATE] (https://msdn.microsoft.com/en-us/ library/ms174979.aspx). –

+0

Да, я запускаю запрос в MS Access, n выделяет «IF EXISTS», «AUTO_INCREMENT» и «INDEX», –

+0

. Версия для доступа к Office для Microsoft - 2007, я также пытался «отбросить таблицу, если существует» отдельно, но это всегда дает синтаксическую ошибку в IF EXISTS –

ответ

1

Вы не можете поместить оператор IF внутри капли и создание отчетов. В любое время вы хотите, чтобы удалить таблицу, что вы не уверены, существует, используйте следующее:

IF(OBJECT_ID('[Database].[Schema].[TableName]') is not null) 
    BEGIN 
     DROP TABLE [Database].[Schema].[TableName]; 
    END; 

Пожалуйста, обратите внимание, вы должны заменить [База данных], [Схема] и [TableName] с соответствующей базой данных, схемы, и имена таблиц, соответственно.

+0

Ошибка при выполнении этого запроса. Недопустимый оператор SQL; «DELETE», «INSERT», «ПРОЦЕДУРА», «ВЫБРАТЬ» или «ОБНОВИТЬ». –

+0

[Согласно документам] (https://msdn.microsoft.com/en-GB/library/ms173790.aspx) SQL Server 2016 поддерживает «IF EXISTS», который является приветственным обновлением для tSQL. Вам нужно сообщить MSAccess, что ваш запрос не будет возвращать записи. Вам также может понадобиться использовать проход через запрос (это было какое-то время, я не могу вспомнить с головы). Я буду тестировать и обновлять позже. –

+0

Да, вам нужно выбрать [Pass-through] (https://msdn.microsoft.com/en-gb/library/tbzed15h (v = vs.80) .aspx) в качестве типа запроса. Обновите свойство * Returns Records * до * False *. Вам также потребуется обновить инструкцию create. Синтаксис tSQL отличается от MySQL. Ниже приведены документы [MS docs] (https://msdn.microsoft.com/en-us/library/ms174979.aspx), включая рабочие примеры. –

Смежные вопросы