Ankündigung

Einklappen
Keine Ankündigung bisher.

Q: Unterschied FOREIGNKEY & CONSTRAINT in Tabellendef. bei MYSQL / MariaDB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Q: Unterschied FOREIGNKEY & CONSTRAINT in Tabellendef. bei MYSQL / MariaDB

    Hi Leute,

    kann jemand den Unterschied zwischen der Definition von Fremdschlüsseln erklären?
    Im Speziellen geht es um die Möglichkeit Fremdschlüssel auf zwei Arten zu definieren.

    Worin liegt der substantielle Unterschied, ob ich direkt FOREIGNKEY oder CONSTRAINT verwende.
    Im CONTRAINT kann ja noch eine art Variable definiert werden z.B. FK_id oder sowas. Hat das irgendwelche Vor- und Nachteile bei der Verarbeitung?

    SG
    bitcoin.de <- Meine Freelancerwährung

  • #2
    Nein.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Deine Fragen sind etwas unklar? Wie wärs mit dem konkreten Unterschied, den Du erklärt haben möchtest, statt von so "ner Art Variable" zu sprechen?

      Schon mal ins Blaue erklärt:
      Dir ist bekannt, dass foreign key constraints über mehrere Spalten angelegt werden können?
      Das erklärt dann hoffentlich, dass es dafür unterschiedliche syntaktische Ansätze geben muss.

      weiter:
      Ein foreign key constraint kann benannt werden. Der Name ist natürlich variabel, aber keine Variable im klassischen Sinne.

      weiter:
      Dieser Name wird meist generiert, weil es keine Sau interessiert, wie ein constraint (egal welche Art) heißen sollte.
      (Dies erfolgt -dankenswerter Weise- entweder durch die DB oder irgendein schlaues Datenbanktool.) Man muss nicht nachdenken, nicht soviel tippen, alle freun sich.

      weiter:
      Wenn Du mal ein kleines Datenbankproblem in der Produktion hast und die Logs quillen über mit
      Code:
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      foreign key constraint violation sys23jjdhlasshrbr ...
      Und Dein Chef oder Kunde fragt freundlich aber bestimmt, was das bedeutet, was sagst Du dann?

      "Ja halt so eine Constraint Violation"

      Die Antwort könnte spontan präziser ausfallen, wenn der Name sinnvoll vergeben wurde.
      Der Name eines Constraints kann auch hilfreich sein, wenn man darauf per DDL zugreifen möchte. Man kann den Constraint einfach direkt ansprechen. Vielleicht hilfreich bei vielen Constraints in einer Tabelle.
      Es gibt sicher noch mehr Gründe für Constraint Namen, aber vielleicht meinst Du das gar nicht.

      Kommentar

      Lädt...
      X