Внешний ключ, обозначенный как NULL в таблице.Зачем? - PullRequest
0 голосов
/ 11 октября 2018

У меня проблемы с правильной вставкой внешнего ключа в таблицу.Я создал пару таблиц, используя этот формат:

CREATE TABLE tbl_Example
(
    ExampleID INT IDENTITY(1,1),
    Example VARCHAR(5) NULL,
    Example VARCHAR(6) NULL,
    Example VARCHAR(MAX),
    Example VARCHAR(MAX),
    ExampleFK INT, 
    Example VARCHAR(MAX),
    etc.
)

И вставил значения в эту таблицу в следующем формате:

SELECT * 
FROM tbl_Example

INSERT INTO tbl_Example (Example, Example, Example, Example, etc.)
VALUES ('data', 'data', 'data', 'data', etc.)

И в конце моего кода поместил эточтобы добавить внешний ключ в мою исходную таблицу:

ALTER TABLE tbl_Example 
    ADD FOREIGN KEY (ExampleFK) REFERENCES tbl_Example1 (Example1ID) 

По какой-то причине после выполнения столбец внешнего ключа полностью заполняется значением NULL.Я попытался настроить размещение столбца внешнего ключа и использовал различные формы синтаксиса для создания внешнего ключа и исправления проблемы, но ничего не помогло.Ключ и соединение, по-видимому, установлены, просто по какой-то причине они не отображаются должным образом в моей таблице.

Редактировать: Значения не должны быть NULL.Example1ID не имеет значений NULL.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вы думаете, что «ADD FOREIGN KEY» будет вставлять значения?Это просто создает ограничение.Вы должны обновить строки сейчас.

0 голосов
/ 11 октября 2018

Причина, по которой у вас NULLS, заключается в том, что при добавлении внешнего ключа в tbl_Example он ссылается на tbl_Example1 (Example1ID)

Так что это не отношение 1 к 1, означающее, что tbl_Example1 PK не выполняет автоматическое заполнение

что это означает, что любой tbl_Example1 PK может быть введен в tbl_Example как FK, который необходимо применить через приложение или через базу данных другим способом

...