Heim > Datenbank > MySQL-Tutorial > Können Fremdschlüsselspalten NULL-Werte zulassen und gleichzeitig die Datenintegrität wahren?

Können Fremdschlüsselspalten NULL-Werte zulassen und gleichzeitig die Datenintegrität wahren?

Linda Hamilton
Freigeben: 2025-01-11 08:10:41
Original
808 Leute haben es durchsucht

Can Foreign Key Columns Allow NULL Values While Maintaining Data Integrity?

Können Fremdschlüsselspalten leer sein?

Kann eine Tabellenspalte, die einen Fremdschlüssel enthält, auf NULL gesetzt werden? Dies ist besonders wichtig in Situationen, in denen die Datenintegrität gewahrt bleiben muss, die Fremdschlüsselspalte jedoch möglicherweise nicht immer einen Wert hat.

Antwort: Durchsetzung bedingter Einschränkungen

Ja, es ist nur möglich, Fremdschlüsseleinschränkungen zu erzwingen, wenn der Wert nicht NULL ist. Dadurch wird die Datenintegrität sichergestellt und gleichzeitig Nullwerte in Fremdschlüsselspalten zugelassen.

Um dies zu veranschaulichen, betrachten Sie den folgenden MySQL-Beispielcode:

CREATE DATABASE t;
USE t;

CREATE TABLE parent (
  id INT NOT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
  id INT NULL, 
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;
Nach dem Login kopieren

Einfügevorgang mit NULL parent_id ist erfolgreich:

INSERT INTO child (id, parent_id) VALUES (1, NULL);
Nach dem Login kopieren

Das Einfügen eines Werts in parent_id, der in der übergeordneten Tabelle nicht vorhanden ist, führt jedoch zu einer Verletzung der Fremdschlüsseleinschränkung:

INSERT INTO child (id, parent_id) VALUES (2, 1);

-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key 
-- constraint fails (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY
-- (`parent_id`) REFERENCES `parent` (`id`))
Nach dem Login kopieren

Dies weist darauf hin, dass Fremdschlüsseleinschränkungen nur erzwungen werden, wenn die Spalte parent_id eine gültige Referenz enthält, wodurch Nullwerte effektiv zugelassen werden, um die Einschränkung zu umgehen.

Das obige ist der detaillierte Inhalt vonKönnen Fremdschlüsselspalten NULL-Werte zulassen und gleichzeitig die Datenintegrität wahren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage