Announcement

Collapse
No announcement yet.

Fremdschluessel mit OpenSQL erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fremdschluessel mit OpenSQL erzeugen

    Hallo!
    Ich habe ein Problem. Ich versuche mit OpenSQL (ein teil der SQL92, den die Delphi-Datanbankkomponenten benutzen) eine Tabelle zu erstellen (CREATE TABLE(...)) und benoetige in dieser aber Fremdschluessel.<br>
    Problem ist nun folgendes:<br>
    OpenSQL kennt FOREIGN KEY nicht. Gibt es eine Moeglichkeit trotzdem Tabellen mit Fremdschluesseln zu erzeugen (mit Komponenten, die standartmaessig bei D4/ Pro dabei sind)???<br>
    Mit Referenzintigrietaeten habe ich das gleiche Problem.
    Danke schonmal<br>
    Steffen

  • #2
    Hallo,

    was verbirgt sich hinter OpenSQL? Die BDE bietet nur <b>LOCAL SQL</b> als Simulation für alle die Datenbanken an, die selber keine SQL-Unterstützung bereitstellen (dBASE, Paradox etc.).

    Den VCL-Komponenten von Delphi ist es völlig egal, welche Datenbank verwendet wird. Nur dann, wenn die genutzte Datenbank in der Lage ist, die <b>referenzielle Integrität</b> selbst abzubilden, kann ein Fremdschlüssel angelegt werden. Allerdings kann LOCAL SQL niemals eine referenzielle Integrität simulieren, wenn die Datenbank dazu nicht fähig ist. Welche Datenbank wird denn im konkreten Fall verwendet?

    P.S: Fremdschlüssel und referenzielle Integrität gehören zusammen

    Comment


    • #3
      Hi Andreas!<br>
      Sorry, du hast recht. Es muss LocalSQL heissen. Hat sich meinerseits der Fehler eingeschlichen.<br>
      Ich versuche eine Paradoxdatenbank anzulegen und erstelle die betreffende Tabellen so (Eigenschaft SQL einer TQueryKomponente wird benutzt):<br>
      <br>
      <code>
      CREATE TABLE "cd_types.db"<br>
      id AUTOINC, name CHAR(20)<br>
      PRIMARY KEY(id))<br>
      <br>
      CREATE TABLE "cds.db"<br>
      id AUTOINC, name CHAR(40), description BLOB(0,3),<br>
      type INTEGER REFERENCES cd_types(id),<br>
      PRIMARY KEY(id))<br>
      </code>
      <br>
      Diese beiden Anweisungen werden nacheinander via ExecSQL ausgefuehrt und ich erhalte dann die Fehlermeldung, dass FOREIGN KEY nicht unterstuetzt wird.<br>
      Also nochmal die Frage: Wie kann ich denn nun eine Tabelle mit Fremdschluesseln mit Hilfe von DelphiKomponenten erstellen??
      Mit der Datenbankoberflaeche geht es ohne Probleme, nur die Anwendung, die ich schreibe <b>muss</b> die Tabellen selbst anlegen koennen

      Comment


      • #4
        Hallo,

        mit SQL lässt sich das im Fall von Paradox nicht lösen. Statt dessen hat man die folgenden Alternativen: <br>
        a) Das Programm bringt "leere Tabellen" bereits mit, die dann jedesmal nur unter einem neuen Namen als Datei entpackt werden. <br>
        b) Das Programm hantiert mit den IDAPI-Funktionen wie DbiDoRestructure usw.<br>
        Für den Weg a) ist in meinem Buch <i>C/S-Datenbankentwicklung mit Delphi</i> ein Beispielprojekt zu finden. Für b) hat Borland auf seiner Webseite einige Beispiele im BDE-Bereich

        Comment


        • #5
          Hi Andreas!<br>
          Was heisst, "Laesst sich im Fall von Paradox nicht loesen"??<br>
          Es muss ja nicht unbedingt Paradox sein. Laesst es sich mit anderen Datenbanken denn loesen?? Wenn ja, mit welchen??<br&gt

          Comment


          • #6
            Hallo,

            alle SQL-Server sprechen nur SQL, daher können bei allen diesen Datenbanken alle Änderungen über SQL ausgeführt werden. Je nach unterstützten Dialect (SQL89 oder SQL92) unterscheidet sich allerdings der Sprachumfang. Beim InterBase oder beim MS SQL Server können zum Beispiel Fremdschlüssel über SQL angelegt werden

            Comment

            Working...
            X