0

CREATE Befehl Frage

Liebe Schwarm Intelligenz!

Ich habe vor eine mächtige Datenbank zu optimieren, da es damals als ich begonnen habe, die Datenbank zu kreieren, diverse Features noch nicht gab, und ich auch im Programmiertechnischen noch eher unerfahren war. Warum ich das mache hat auch einen Grund: In der App funktioniert die Datenbank, in der Cloud gibt es diverse Probleme und automatische Verknüpfungen schlagen fehl. Ich weiß nicht genau warum, aber es wird wahrscheinlich daran liegen, dass die Cloud diverse Trigger in einer anderen Priorität ausführt.

Ich erlaube mir deshalb immer wieder mal ein paar offene Fragen zu posten, da ich nicht annehme, dass z.B. mein Hero LEO (der mir schon extrem viel geholfen hat) sich dir Zeit nehmen kann, die Datenbank nach Fehlern zu durchleuchten.

Wie auch immer: In Frage 1 geht es um den Befehl CREATE

wenn ich also folgendes in einer Formel angebe:

let i create (select Tabelle);

i.Name:= XY;

Wann wird dann der Datensatz tatsächlich erstellt.. schon direkt nach/in der Zeile let i create (select Tabelle) oder erst bei i.Name:= XY...

Ich würde nämlich gerne der Übersicht halber die Variablen in jedem Skript ganz oben sammeln..

Danke. LG

4 Antworten

null
    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    ok ich habs grad rausgefunden falls es jemanden interessiert:

    let i := (create Tabelle1) erzeugt bereits einen Datensatz. Ich dachte eigentlich, dass der Befehl LET nur Variablen befüllt.. in diesem Fall ist es anscheinend anders, man lernt halt nie aus. LG

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo,

    in diesem Fall ist das auch nicht anders ... bzw. eigentlich aber doch falsch ausgedrückt:

    1. "let" definiert eine Konstante, in diesem Fall die Konstante i - Variable definierst du mit "var"

    2. über die Zuweiseung  (:=) wird die Konstante befüllt

    3. über (create Table1) wird ein neuer Datensatz der Tabelle Table1 erstellt

    Die drei Punkte gehören in dieser Codezeile zusammen und sorgen dafür, dass du zum Schluss der Anweisung eine neue Konstante mit dem Namen i vom Typ Table1 mit einem neuen Datensatz hast.

    Bei einer Variable lässt sich die Deklaration und die Zuweisung auch trennen:

    var i := null;
    i := (create Tabel1);

    Wobei zwischen diesen 2 Zeilen auch beliebig viel anderer Code sein kann - wenn das sinnvoll ist ;)

    VG Frank

    • Morris_Hanson
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja, natürlich.. Konstanten und nicht Variablen. Danke auf jeden Fall für deine Zeilen.. 

    was wäre der usecase für die Variable "VAR"..?

    nach deiner Erklärung verstehe ich trotzdem nicht, warum ich nach der Zeile:

    let i := (create Tabelle 1)

    tatsächlich eine Eintragung in der Tabelle 1 bekommen.. Ich habe ja lediglich die Konstante i befüllt, nicht jedoch ausgeführt..??

    LG

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Dein (create Tabelle 1) legt den Datensatz an - erst danach wird dieser neue Datensatz der Konstante als "Zeiger" auf diesen DAtensatz zugewiesen. Eine Konstante / Variable kannst du nicht ausführen, höchstens auslesen und im Fall einer Variablen etwas anderes zuweisen.

    Eine Variable nutzt du, wenn du ihr nachträglich etwas zuweisen willst oder die Zuweisung verändern möchtest. Usecase ist z. B. die vorzeitige Deklaration einer Variablen um diese innerhalb einer untergeordneten Kontrollstruktur (z. B. Schleife oder Entscheidung) zuzuweisen aber auch ausserhalb dieser Kontrollstruktur noch zu nutzen - z. B.:

    var i := 0;
    var ii := 0;
    for myDatensatz in select Tabelle do
      if myDatensatz.Menge > 0 then
        i := i + 1
      else
        ii := ii + 1
      end;
    end;
    if i > ii then
      alert("Es gibt mehr Datensätze mit positiver Menge");
    end

    Würdest du i oder ii in der for-do-Schleife oder der if-Entscheidung deklarieren könntest du später nicht mehr darauf zugreifen (die ist dann nur innerhalb dieser Struktur gültig). Als Konstante könntest du sie nicht hochzählen.

    Kein sonderlich geistreiches Beispiel aber ich hoffe, es wurde klar, worum es geht. :)

    VG Frank

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 4Antworten
  • 2929Ansichten