TUpdateSQL
-
Hallo
ich greife auf eine Datenbank über ein Query und MyODBC zu. Wenn ich über ein TUpdateSQL daten verändern will (update ... where buch_id = "5"), dann sagt er: "Table does not support this operation beacause it is not uniquely indexed." dabei ist buch_id primary, unique und index feld.
Ideen?
Könnte was mit CashedUpdate und Constrained zu tun haben. Ich weiss aber weder was das ist, noch ob es tatsächlich relevant ist;-)
mfg
-
Wieso nimmst Du keine Query und fürst den SQL-String darin aus?
-
update ... where buch_id = "5"
Schreibt man das nicht so update ... where buch_id = '5' also mit einfachen Hochkommas ? In doppelten Hochkommas würde '5' als Name einer Tabellenspalte interpretiert.
[ Dieser Beitrag wurde am 31.01.2003 um 08:54 Uhr von Peter editiert. ]
-
Also wenn buch_id einen numerischen Wert hat, dann wird das ganz ohne Hochkommas geschrieben.
Ansonsten ist das von DB zu DB verschieden.
Bei Oracle werden String-Ausdrücke z.B in einfachen Hochkommas geschrieben, bei Access hingegen in doppelten Hochkommas.Aber bei numerischen Werten wird der Wert direkt angegeben
update ... where buch_id = 5
-
Jou, bei Oracle kann man auch nummerische Werte in einfache Hochkommas schreiben, is sich wurscht
-
@F98: genau die gleiche Idee hatte ich auch schon - ergebnis: dasselbe
was ich vergessen hab zu erwähnen: er updatet die tabelle. sagt aber trotzdem den fehler - das ist doch nich logisch oder?;-)
@peter: hab ich schon - ohne erfolg
sql = "UPDATE Buecher SET Name = \"" + ediBuchBearbeitenName->Text + "\" WHERE Buch_ID = " + ediBuchBearbeitenID->Text;
Bibliothekprogramm->updateSQL->Query[ukModify]->Close();
Bibliothekprogramm->updateSQL->ModifySQL->Clear();
Bibliothekprogramm->updateSQL->ModifySQL->Add(sql);
Bibliothekprogramm->updateSQL->Query[ukModify]->Prepare();
Bibliothekprogramm->updateSQL->ExecSQL(ukModify);
Bibliothekprogramm->updateSQL->ModifySQL->Clear();
Bibliothekprogramm->queryMain->Refresh();is daran was falsch??
-
Ich verwende kein TUpdateSQL, deshalb kann ich dazu nix sagen. Aber in solchen Fällen geh ich immer her, lass mir das SQL Zeuch ins Clipboard schreiben und paste es in SQL-Plus (Oracle) rein. Da kann ich dann wunderbar ausprobieren, ob der Fehler vielleicht vom SQL-Statement herrührt. Vielleicht hast Du ja ähnliche Möglichkeiten das auszuprobieren.
-
mach ich au immer;-)
aber über die shell von mysql->KEINE probleme:
Query ok. (1) line(s) affected. oda so ähnlich
grrrrrrr
<edit>
Hat sich mittlerweile geklärt. Wenn jemand mal das selbe Problem hat: das query muss erstma eine gesamt abfrage der DB haben (also select * from ..), damit es weiss, dass ein feld tatsächlich index, unique, primary, .. ist). wenn wer noch fragen hat -> einfach stellen
</edit>
[ Dieser Beitrag wurde am 01.02.2003 um 12:23 Uhr von JohnnyB editiert. ]