SSMS разрешает дублирующиеся записи в таблице, но не последующие обновления

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

В больших проектах, я пошел бы с пространством имен. Используя субдомен не чувствует себя хорошо мне по некоторым причинам.

6
задан Smandoli 22 February 2016 в 22:00
поделиться

4 ответа

Все, что когда-либо делала студия управления, - это предоставляет пользовательский интерфейс для создания некоторого SQL для вас и запускает его в базе данных.

В вашем случае, каждый раз, когда вы добавляете строку, она выдает INSERT заявление. Это совершенно верно.

Когда вы затем попытались использовать пользовательский интерфейс для УДАЛЕНИЯ или ОБНОВЛЕНИЯ одной записи из всех этих повторяющихся записей, он не смог создать SQL для этого. Причина в том, что, поскольку в таблице не было ключа, нет способа создать предложение WHERE, которое представляло бы запись, которую вы пытались ОБНОВИТЬ или УДАЛИТЬ.

Это сообщения об ошибках звучат для меня совершенно ясно и достоверно. .

Что касается ваших комментариев:

К моему удивлению, это также позволило мне введите "значение1" во второй строке и войти вниз - это должно быть невозможно с тех пор есть два одинаковых ряды. Однако, поскольку я был просто возиться, это меня не беспокоило.

Очевидно, это странно и ломает теория отношений, но я не забота, так как это просто таблица я создана, чтобы возиться с ней.

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

9
ответ дан 9 December 2019 в 20:47
поделиться

Причуда - да, но недостаток - нет. Совершенно законно иметь таблицу без уникального ключа, но невозможно удалить из нее строку с помощью редактора таблиц в SSMS (или Enterprise Manager до него), если есть идентичные строки.

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

Я бы не стал использовать редактор таблиц для такого рода вещей, я бы написал сценарии INSERT.

1
ответ дан 9 December 2019 в 20:47
поделиться

Редактор записей в Sql Server Management Studio - небольшая (и относительно не важная) часть предложения продукта SQL Server. Я думаю, вы можете спокойно принять причуды редактора, не беспокоясь об относительном качестве самого сервера.

За кулисами Management Studio выполняет операторы SQL для выполнения ваших действий, как если бы вы сами набрали этот SQL . Так что если вы нарушите правило, вы заплатите штраф.

1
ответ дан 9 December 2019 в 20:47
поделиться

Я не уверен, как вы ожидаете, что инструмент узнает, какую строку следует удалить, если у вас не было уникального ключа. Вы хотите, чтобы он удалил только один из дубликатов или оба? если только один, то какой ключ он должен использовать.

Студия управления - это инструмент. Его задача не в том, чтобы обеспечить идеальный дизайн таблицы или базовую базу данных 101, которая большую часть времени будет включать в себя наличие какого-то уникального ключа. Что, если бы у вас была какая-то сумасшедшая бизнес-модель, требующая повторяющихся строк? Разве тогда не будет жалоба на то, что инструмент предотвращает дублирование ролей?

Суть в том, что 1. В любом случае вы не должны редактировать или удалять данные с помощью инструмента. Для большинства вещей вам следует написать сценарии операторов.
2. You should have a unique key

Can't blame any tool for not having those things in place.

1
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: