2016-05-04 5 views
-1

Dies ist die Abfrage, die in C# ausgeführt wird. n obige Fehler bekommenAccess-Datenbank, Sql-Abfrage, Fehler "Syntaxfehler in DROP TABLE oder 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

Ich vermute, dass Ihre Frage abgelehnt wurde, weil es einen Mangel an Forschungsanstrengungen anzeigt. Welche Schritte haben Sie unternommen, um diesen Fehler zu beheben? Konnten Sie herausfinden, welche Aussage den Fehler verursacht? Hier sind die Microsoft-Dokumente auf der [DROP] (https://msdn.microsoft.com/en-GB/library/ms173790.aspx) und [CREATE] (https://msdn.microsoft.com/en-us/ Bibliothek/ms174979.aspx) Anweisungen. –

+0

Ja, ich führe die Abfrage in MS Access, n es markiert "IF EXISTS", "AUTO_INCREMENT" und "INDEX", –

+0

Microsoft Office-Access-Version ist 2007, habe ich auch "Drop-Tabelle, wenn vorhanden" getrennt, aber es gibt immer Syntaxfehler bei IF EXISTS –

Antwort

1

Sie können nicht eine IF-Anweisung innerhalb Tropfen setzen und Anweisungen erstellen. Wenn Sie wollen eine Tabelle löschen, die Sie nicht sicher sind, vorhanden ist, verwenden Sie die folgende:

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

Bitte beachten Sie, sollten Sie ersetzen [Datenbank], [Schema] und [Tablename] mit der entsprechenden Datenbank, Schema, und Tabellennamen jeweils.

+0

Fehler beim Ausführen dieser Abfrage. Ungültige SQL-Anweisung; erwartet 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' oder 'UPDATE'. –

+0

[Laut den Dokumenten] (https://msdn.microsoft.com/en-GB/library/ms173790.aspx) SQL Server 2016 unterstützt "IF EXISTS", was ein willkommenes Update für tSQL ist. Sie müssen MSAccess mitteilen, dass Ihre Abfrage keine Datensätze zurückgibt. Möglicherweise müssen Sie auch eine Pass-Through-Abfrage verwenden (es ist eine Weile her, ich kann mich nicht mehr von meinem Kopf erinnern). Ich werde später testen und aktualisieren. –

+0

Ja, Sie müssen [Pass-through] (https://msdn.microsoft.com/en-gb/library/tbzed15h (v = vs.80) .aspx) als Abfragetyp auswählen. Aktualisieren Sie die Eigenschaft * Records Records * auf * False *. Sie müssen auch Ihre create-Anweisung aktualisieren. Die tSQL-Syntax unterscheidet sich von MySQL. Hier sind die MS-Dokumente (https://msdn.microsoft.com/en-us/library/ms174979.aspx), die Arbeitsbeispiele enthalten. –