Heim >Datenbank >MySQL-Tutorial >Erlauben Fremdschlüsseleinschränkungen in MySQL InnoDB NULL-Werte?

Erlauben Fremdschlüsseleinschränkungen in MySQL InnoDB NULL-Werte?

Susan Sarandon
Susan SarandonOriginal
2025-01-11 10:07:42729Durchsuche

Do Foreign Key Constraints in MySQL InnoDB Allow NULL Values?

Fremdschlüsseleinschränkungen und NULL-Werte in MySQL InnoDB-Tabellen

Frage:

Können Fremdschlüsseleinschränkungen in einer Datenbanktabelle weiterhin wirksam werden, wenn die Spalte NULL-Werte enthält? Wie verhalten sich Fremdschlüsseleinschränkungen insbesondere im Kontext von MySQL- und InnoDB-Tabellen, wenn ein NULL-Wert auftritt?

Antwort:

Ja, Fremdschlüsseleinschränkungen können nur erzwungen werden, wenn der Wert der Fremdschlüsselspalte nicht NULL ist. Dies ermöglicht Flexibilität bei der Datenverwaltung und gewährleistet die Datenintegrität.

Wenn in MySQL eine Tabellenspalte mit einer Fremdschlüsseleinschränkung einen NULL-Wert enthält, wird die Einschränkung nicht überprüft. Dies bedeutet, dass für Zeilen mit NULL in der Fremdschlüsselspalte keine Eltern-Kind-Beziehung erzwungen wird.

Wenn jedoch ein Nicht-NULL-Wert in eine Fremdschlüsselspalte eingefügt wird, prüft die Datenbank, ob der Wert in der referenzierten Tabelle vorhanden ist. Wenn der Wert nicht vorhanden ist, wird ein Fehler ausgelöst und der Einfügevorgang schlägt fehl, wodurch die referenzielle Integrität verhindert wird.

Beispiel:

Betrachten Sie die übergeordneten und untergeordneten Tabellen mit der folgenden Struktur:

<code class="language-sql">CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id));

CREATE TABLE child (id INT NULL, parent_id INT NULL, FOREIGN KEY (parent_id) REFERENCES parent(id));</code>

Die folgende Abfrage veranschaulicht das Verhalten von Fremdschlüsseleinschränkungen mit NULL-Werten:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,因为 parent_id 为 NULL。

INSERT INTO child (id, parent_id) VALUES (2, 10);
-- 查询失败,因为没有 id 为 10 的 parent 行。</code>

Dies weist darauf hin, dass Fremdschlüsseleinschränkungen nur erzwungen werden, wenn die Fremdschlüsselspalte einen Wert ungleich NULL enthält.

Das obige ist der detaillierte Inhalt vonErlauben Fremdschlüsseleinschränkungen in MySQL InnoDB NULL-Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn