Heim >Datenbank >MySQL-Tutorial >Können MySQL-Fremdschlüssel NULL-Werte zulassen?

Können MySQL-Fremdschlüssel NULL-Werte zulassen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-11 10:12:41118Durchsuche

Can MySQL Foreign Keys Allow NULL Values?

Erlauben MySQL-Fremdschlüssel NULL-Werte?

Die Durchsetzung der Datenintegrität ist beim Entwerfen von Datenbanktabellen von entscheidender Bedeutung. Verweise auf Spalten anderer Tabellen über Fremdschlüssel spielen eine Schlüsselrolle bei der Aufrechterhaltung dieser Verbindungen. Eine häufig gestellte Frage lautet: Erlauben Tabellenspalten mit Fremdschlüsseln NULL-Werte?

In MySQL, das den Tabellentyp InnoDB verwendet, lautet die Antwort „Ja“. Sie können Fremdschlüsselspalten als nullable deklarieren. Dieses Verhalten ermöglicht das Einfügen neuer Zeilen mit NULL-Werten in Fremdschlüsselspalten, erzwingt jedoch Einschränkungen bei der Eingabe von Nicht-NULL-Werten.

Um dies zu veranschaulichen, betrachten Sie das folgende Beispiel:

<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>

Jetzt fügen wir eine Zeile in die „untergeordnete“ Tabelle ein, in der „parent_id“ NULL ist:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,影响 1 行 (0.01 秒)</code>

Dieser Einfügevorgang war erfolgreich, weil wir einen NULL-Wert für die Spalte „parent_id“ angegeben haben. Der Versuch, einen Nicht-NULL-Wert einzufügen, der in der „übergeordneten“ Tabelle nicht vorhanden ist, führt jedoch zu einem Fehler, da die Fremdschlüsseleinschränkung erzwungen wird:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (2, 1);

-- 错误 1452 (23000):无法添加或更新子行:外键约束失败 (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))</code>

Dieses Verhalten bietet Flexibilität und Kontrolle über die Datenintegrität. Sie können während der Datenauffüllung vorübergehende NULL-Werte zulassen und gleichzeitig Fremdschlüsseleinschränkungen später noch erzwingen. Durch die sorgfältige Verwaltung von NULL-Einschränkungen für Fremdschlüsselspalten können Sie die Genauigkeit und Konsistenz Ihrer Daten sicherstellen.

Das obige ist der detaillierte Inhalt vonKönnen MySQL-Fremdschlüssel NULL-Werte zulassen?. 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