Tabelleninhalt ermitteln

Tabelleninhalt ermitteln

am 04.09.2006 13:52:29 von benjamin235

Hallo!

Ich hab schon wieder eine Frage (MySQL unter Linux mit C): Wie kann ich

denn bei einer Tabelle die Entscheidung treffen etwas einzutragen wenn
sie leer ist und nichts eintragen (also das Programm läuft einfach
weiter und macht die ganzen UPDATEs) wenn bereits etwas eingetragen
ist? Also ich will nur die erste Spalte (das ist die ID) überprüfen.
Sollte da noch nichts stehen, wäre die Tabelle also leer, darauf sol
da eine 1 eingetragen und ganz normal weitergemacht werden. Sollte
bereits etwas drin stehen, so muss in ID nichts eingetragen, aber der
Rest muss dann ausgeführt werden.
Wenn ich es nicht falsch verstanden habe, so kann ich doch nur einen
UPDATE-Befehl ausführen, wenn bereits etwas in der Tabelle steht,
deshalb muss ich da vorher etwas eintragen. Die ID wäre aber dann
auto_increment!

Das ganze nochmal, da sich sonst ja jemand aufregt, dass das nicht mein
echter Name ist!

Re: Tabelleninhalt ermitteln

am 04.09.2006 14:27:43 von Thomas Rachel

Benjamin Maus wrote:

> Hallo!
>
> Ich hab schon wieder eine Frage (MySQL unter Linux mit C): Wie kann ich
> denn bei einer Tabelle die Entscheidung treffen etwas einzutragen wenn
> sie leer ist und nichts eintragen (also das Programm läuft einfach
> weiter und macht die ganzen UPDATEs) wenn bereits etwas eingetragen
> ist? Also ich will nur die erste Spalte (das ist die ID) überprüfen.

Indem Du

- abfragst (z.B. "SELECT COUNT(*) FROM Tabelle") -> das ergibt ein Result
Set mit 1 Zeile, die 1 Feld enthält, das die Anzahl enthält.

Diese Anzahl ist entweder 0 oder >0. Wenn sie 0 ist, fügst Du ein, ansonsten
nicht. Das ist aber elementare Programmierlogik...

Allerdings ist mir schleierhaft, was dies bezwecken soll. Die Tabelle hätte
dann ja grundsätzlich nur einen Eintrag?


Desweiteren könntest Du die Tabelle so einrichten, daß sie einen UNIQUE oder
PRIMARY KEY hat, und Du versuchst dann, immer dieselbe Zahl einzufügen, und
zwar mit INSERT IGNORE INTO ... .

> Wenn ich es nicht falsch verstanden habe, so kann ich doch nur einen
> UPDATE-Befehl ausführen, wenn bereits etwas in der Tabelle steht,
> deshalb muss ich da vorher etwas eintragen. Die ID wäre aber dann
> auto_increment!

Die kannst Du trotzdem festlegen. Ein Feld muß nicht zwangsläufig
AUTO_INCREMENT sein...


Thomas
--
"If you're killed in the Matrix, you die here?"
"The body cannot live without the mind."
Neo and Morpheus, "The Matrix"

Re: Tabelleninhalt ermitteln

am 04.09.2006 14:58:18 von Christian Kirsch

Thomas Rachel schrieb:
> Benjamin Maus wrote:
>
>> Hallo!
>>
>> Ich hab schon wieder eine Frage (MySQL unter Linux mit C): Wie kann ich
>> denn bei einer Tabelle die Entscheidung treffen etwas einzutragen wenn
>> sie leer ist und nichts eintragen (also das Programm läuft einfach
>> weiter und macht die ganzen UPDATEs) wenn bereits etwas eingetragen
>> ist? Also ich will nur die erste Spalte (das ist die ID) überprüfen.
>
> Indem Du
>
> - abfragst (z.B. "SELECT COUNT(*) FROM Tabelle") -> das ergibt ein Result
> Set mit 1 Zeile, die 1 Feld enthält, das die Anzahl enthält.
>
> Diese Anzahl ist entweder 0 oder >0. Wenn sie 0 ist, fügst Du ein, ansonsten
> nicht. Das ist aber elementare Programmierlogik...
>
> Allerdings ist mir schleierhaft, was dies bezwecken soll. Die Tabelle hätte
> dann ja grundsätzlich nur einen Eintrag?
>

Er möchte vielleicht das Singleton-Pattern implementieren?

Re: Tabelleninhalt ermitteln

am 04.09.2006 15:21:32 von Axel Schwenke

Christian Kirsch wrote:
> Thomas Rachel schrieb:
>> Benjamin Maus wrote:
>>
>>> Ich hab schon wieder eine Frage (MySQL unter Linux mit C): Wie kann ich
>>> denn bei einer Tabelle die Entscheidung treffen etwas einzutragen wenn
>>> sie leer ist und nichts eintragen (also das Programm läuft einfach
>>> weiter und macht die ganzen UPDATEs) wenn bereits etwas eingetragen
>>> ist? Also ich will nur die erste Spalte (das ist die ID) überprüfen.

>> ... schleierhaft, was dies bezwecken soll. Die Tabelle hätte
>> dann ja grundsätzlich nur einen Eintrag?
>
> Er möchte vielleicht das Singleton-Pattern implementieren?

Nur warum dann AUTO_INCREMENT?

Aber prinzipiell tut ein UNIQUE Constraint (nur halt nicht auf die
AUTO_INCREMENT Spalte) zusammen mit INSERT IGNORE das gewünschte.
Eventuell passt auch REPLACE INTO oder INSERT ... ON DUPLICATE KEY
UPDATE besser. Ich bin aus dem OP nicht recht schlau geworden, was
denn nun eigentlich gewünscht wird.


XL

Re: Tabelleninhalt ermitteln

am 04.09.2006 15:47:51 von Christian Kirsch

Axel Schwenke schrieb:
> Christian Kirsch wrote:
>> Thomas Rachel schrieb:
>>> Benjamin Maus wrote:
>>>
>>>> Ich hab schon wieder eine Frage (MySQL unter Linux mit C): Wie kann ich
>>>> denn bei einer Tabelle die Entscheidung treffen etwas einzutragen wenn
>>>> sie leer ist und nichts eintragen (also das Programm läuft einfach
>>>> weiter und macht die ganzen UPDATEs) wenn bereits etwas eingetragen
>>>> ist? Also ich will nur die erste Spalte (das ist die ID) überprüfen.
>
>>> ... schleierhaft, was dies bezwecken soll. Die Tabelle hätte
>>> dann ja grundsätzlich nur einen Eintrag?
>> Er möchte vielleicht das Singleton-Pattern implementieren?
>
> Nur warum dann AUTO_INCREMENT?
>

Dein Ironiedetektor braucht Öl ;-)