Возможно ли, что установка столбца в качестве первичного ключа может превратить некоторые значения в столбец NULL?

#sql #sql-server

Вопрос:

Мне нужно было изменить с помощью datatable, установив столбец идентификатора в качестве ПЕРВИЧНОГО КЛЮЧА, чтобы работать с ним на клиенте, который я разрабатываю. Однако я забыл скопировать/закрыть уже существующие записи, и теперь у меня такое чувство, что данные отсутствуют. Возможно ли, что установка столбца в качестве первичного ключа могла повлиять на данные в других столбцах?

К вашему сведению, я установил первичный ключ, войдя в дизайн, щелкнув правой кнопкой мыши столбец и нажав «Установить в качестве первичного ключа».

Комментарии:

1. Нет, это невозможно-ну, если только у вас на столе нет какого-нибудь очень загадочного триггера DDL.

2. Весьма сомнительно, что это произошло, если вы не видели ошибок. к вашему сведению, у Oracle действительно есть функция, которая похожа на то, что вы описываете, если это действительно необходимо.

Ответ №1:

Какой инструмент «дизайна» вы использовали? Единственное, что имело бы смысл, было бы, если бы были дубликаты идентификаторов, но это должно привести к ошибке вместо выбора случайных строк. Единственное, о чем я могу подумать, это если бы у вас был внешний ключ, установленный для каскадного удаления и удаления строк в дочерней таблице.

Вы только говорите, что у вас есть «идея» о том, что строки были удалены. Это заставляет меня думать, что вы, возможно, просто выполняете какой-то простой запрос «выберите топ(100) *» или что-то в этом роде и не видите те же данные, что и раньше, т. Е. Раньше вы видели идентификаторы типа 2093939, а теперь видите только 1, 2, 3 и т. Д.

При создании первичного ключа или кластеризованного индекса это может изменить порядок возврата строк по умолчанию. Создание кластеризованного первичного ключа, скорее всего, вернет строки в порядке возрастания в этом случае по умолчанию. Может ли это быть так?