![]() |
Datenbank: MySQL • Zugriff über: ODBC
Programm zur Überprüfung der SQL Syntax
kennt jemand ein gutes programm, dass einem fehler in der sql syntax besser beschreibt?
ich hab z.b. folgendes statement:
SQL-Code:
da bekomm ich folgenden fehler:
INSERT INTO BestellDaten (ID, EMail, Bestellart, BestellungDatum, Kundennummer, Rechnungsnummer, Bestellnummer, Bemerkung)
VALUES (1000, 'test@bla.de', 1, '2005-12-03 12:13:03', (select max(Kundennummer)+1 from BestellDaten), 0, (select max(Bestellnummer)+1 from BestellDaten), '') "Excute Error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select max(Kundennummer)+1 from BestellDaten), 0, (select max(B (1064)" hat jemand ne idee was da falsch ist? |
Re: Programm zur Überprüfung der SQL Syntax
wahrscheinlich ein Problem mit
Delphi-Quellcode:
bin mir nicht sicher, ob das "+1" überhaupt geht, und wenn eher ")select max(Kundennummer) from BestellDaten)+1"
select max(Kundennummer)+1 from BestellDaten
Ein Prog zur Syntaxprüfung kenn ich leider nicht. |
Re: Programm zur Überprüfung der SQL Syntax
also am + 1 liegts net, habs schon weggelassen.
hab das ganze aber jetzt so gelöst: INSERT INTO BestellDaten (ID, EMail, Bestellart, BestellungDatum, Kundennummer, Rechnungsnummer, Bestellnummer, Bemerkung) (SELECT 1000, 'test@bla.de', 1, '2005-12-03 12:13:03', Max(Kundennummer)+1, 0, Max(Bestellnummer)+1, '' FROM BestellDaten); aber kennt jemand ein gutes syntax check programm? |
Re: Programm zur Überprüfung der SQL Syntax
Ein SQL-Syntaxcheck bringt Dir nicht so viel, weil mySQL keine SQL-DB ist. Sie tut bloss so. :warn:
mySQL *IST* doch ein Syntaxchecker, es sagt dir doch genau, das da was nicht stimmt. Wesentlich genauer wäre ein Syntaxcheckomat auch nicht. Meine persönliche Meinung ist, das deine Updateanweisung grauslig ist. Gibt es denn keine anständigen Generatoren in mySQL? AutoInc-Felder? Na, egal. Versuch doch mal, die 'select' Dinger in der INSERT-Anweisung durch 12345 oder so zu ersetzen. Das sollte gehen. Dann ist es so, das eine Subquery immer in Klammern stehen sollte (jedenfalls bei MsSQL), also z.B. so:
SQL-Code:
Aber nochmal: Grauslig, ich würde sogar sagen: :kotz:
Insert into Foo
(Bar, Zuff, Nick) Values ('Bar', (select max(Zuff) + 1 from Foo), (select max(Nick) + 1 from Foo) ) |
Re: Programm zur Überprüfung der SQL Syntax
Zitat:
Zitat:
Und SPs werden wohl erst ab Version 5 unterstützt werden. |
Re: Programm zur Überprüfung der SQL Syntax
@Sharky: Eine SQL-DB ist eine DB, die den ANSI-SQL Stardard umsetzt. Dazu gehört nicht nur, das sie SQL versteht (das tut DBase III auch, ist aber noch lange keine SQL-DB). mySQL ist eine Tabellenverwaltung, die SQL-Kommandos interpretieren kann. mySQL setzt den ANSI-Standard nicht um (ab V5 soll sie das aber mehr-oder-weniger tun).
Zum Standard gehören u.a. Transaktionen, Views, Stored Procedures, Trigger usw, aber auch die Tatsache, das z.B. sämtliche Strukturinformationen (Views, Tabellennamen, Felder und Feldtypen usw.) in der DB selbst einseh- und änderbar ist. Zu einer SQL-DB gehört aber auch, das ich den Rechner im laufenden Betrieb ausschalten kann, ohne das die DB darunter leidet. Es muss gewährleistet sein, das höchstens die letzte offene Transaktion nicht gespeichert wurde. Weiterhin muss sie in der Lage sein, jede DB nach einem Crash wieder herzustellen. MSSQL z.B. rödelt nach einem Crash wie ein Weltmeister auf der Platte rum, weil es eine Uraltversion der Daten (die letzte als sicher geltende Version (Stichtwort:CHECKPOINT) nimmt, und die in der Log-Datei enthaltenen Aufzeichnungen über Änderungen etc. so lange anwendet, bis alle Daten wieder ganz sind. Preisfrage: Was ist die höchste Anzahl von Datensätzen in einer mySQL-DB, die bei einem Rechnercrash zerstört wird? Nebenbei würde ein SQL-Syntaxchecker auch bei Oracle, MSSQL etc. nix bringen, weil alle den Standard umsetzen, aber sich keiner dran hält. So ist das mit Standards: Alle finden's toll, Alle setzen es um, Alle machen es besser, und Keiner hält sich dran. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz